기록양식 (TIL)
1. 사용 개념
2. 의문점 or 문제
3. 시도해 본 것들(+응용) or 삽질
4. 해결
5. 알게 된 점(회고)
Java 2주차 강의 개념들 : 객체지향 전
내일부터는 오답 풀이과정도 적어 놓아야겠다.
총 12문제 풀이 / 그 중 5문제 반복 풀이

📟시도
substring을 사용해서 index내의 글자를 추출substring(시작번호,끝번호)>시작(0이 시작점)~끝 조회(6이라면 5까지 출력)
ex) "ABCD" > substring(1,2) = "B"length: 배열조회에서 사용(필드), 고정된 크기의 객체와 비슷 = 학생의 이름,키 등length(): 문자열의 길이조회(메소드), 함수의 동적인 기능 = 문자열의 변수는 변동이 가능해서
class Solution {
public String solution(String s) {
String answer = "";
if(s.length()%2==0){
answer = s.substring(s.length()/2-1,s.length()/2+1);
} else {
answer = s.substring(s.length()/2,s.length()/2+1);
}
return answer;
}
}

📟시도
- 제한사항의 모든 원소는 다르니, 중복을 하지 않는 배열의
set으로 시도set의 import와 생성for each사용 > 연속된 변수목록을 출력하기 위해 >numbers변수를 > 출력해서 >add로 추가set의!contains를 활용해서 겹치지 않는 부분들의 합을 출력
import java.util.HashSet;
import java.util.Set;
class Solution {
public int solution(int[] numbers) {
int answer = 0;
Set<Integer> num = new HashSet<Integer>();
for(int n : numbers){
num.add(n);
}
for(int i=0; i<10; i++){
if(!num.contains(i)){
answer += i;
}
}
return answer;
}
}

📟시도
- 문제 내에서
signs[i]참 여부에 따라 양수,음수를 설정 /if문for문활용- 조건문 내에서 배열의 출력 문법 형식, 아직 미숙
- 불리언 배열의 참과 거짓을 따로 설정해주는 줄 착각
class Solution {
public int solution(int[] absolutes, boolean[] signs) {
int answer = 0;
for(int i=0; i<signs.length; i++){
if(signs[i]==true){
answer+= absolutes[i];
} else {
answer-= absolutes[i];
}
}
return answer;
}
}

📟시도
- 이전 문제에서 활용한
substring을 사용- 조건문 내에서 선언한
변수는 바깥에서 미리 선언 해주어야함substring(인덱스숫자,인덱스숫자)/substring(1)>첫 번째만 조회가 아니라, 1번째부터 끝까지
실수 부분s.substring(s.length(0),s.length()-4);>s.substring(0,s.length()-4);- 문자열의 길이는
length()
class Solution {
public String solution(String phone_number) {
String answer = "";
String s = phone_number;
String star = "";
String last = s.substring(s.length()-4);
String front = s.substring(0,s.length()-4);
for(int i=0; i<front.length(); i++){
star += "*" ;
}
answer = star + last ;
return answer;
}
}

📟시도
- 행렬의 개념에 대한 이해 부족
- 2차 배열 생성
int[][] answer = new int[arr1.length][arr1.length];>int[][] answer = new int[arr1.length][arr1[0].length];> 문제의 동일 행,열을 보고 같은length로 풀이- 각 행,열
length로 조절
class Solution {
public int[][] solution(int[][] arr1, int[][] arr2) {
int[][] answer = new int[arr1.length][arr1[0].length];
for(int i=0; i<arr1.length; i++){
for(int j=0; j<arr1[0].length; j++){
answer[i][j] = arr1[i][j] + arr2[i][j];
}
}
return answer;
}
}
- 간결하고 효율적인 코드작성을 위해서는 수학적 접근과 풀이방식이 필요하다.
수학 공부를 시작해야겠다..- 머리로만 이해하는 것보단 역시 손으로 치고 몸으로 체득하는게 더 나한테 맞는 것 같다.
