추억 점수
HashMap에서 키를 가져오고 비교하기
containsKey() 또는 get()
ex.
map.containsKey(person)
map.getOrDefault(person, 0)
카드 뭉치
ArrayIndexOutOfBoundsException 오류
cards1과 cards2의 인덱스를 따로 관리한다.
int idx1 = 0;
int idx2 = 0;
for(int i=0; i<goal.length; i++) {
if(idx1 < cards1.length && cards1[idx1].equals(goal[i])) {
idx1++;
} else if(idx2 < cards2.length && cards2[idx2].equals(goal[i])) {
idx2++;
} else {
return "No";
}
}
return "Yes";
크기가 작은 부분 문자열
런타임 에러가 발생하는 주요 원인
Integer.parseInt 사용
문자열이 32비트 정수의 범위를 초과하면 변환 중 NumberFormatException이 발생함
푸드 파이트 대회
대칭 구조를 생성해야 하는 데 실패함
StringBuilder를 사용해서 누적한 뒤
String left = sb.toString();
String result = left + "0" + sb.reverse();
최종결과 1223330333221 과 같은 대칭 구조를 얻을 수 있음
콜라 문제
b가 1이라서 입출력 예시는 성공했지만, 코드에 b를 사용하지 않음 ㅋㅋ,,
문제좀제대로읽고제대로해!!!!!!!!!!
삼총사
배열에서 서로 다른 세 수의 합이 0이 되는 문제여서 투 포인터 방식을 사용했는데
입출력 예시에선 안그랬지만 테스트케이스에서 배열에 중복된 숫자가 있었나봄
동일한 결과를 여러 번 계산할 가능성이 있대
중복 처리를 해줘야 하는데 ........
삼총사 문제가 투포인터보다 단순히 모든 조합을 탐색하는 방식이 더 적합하다고함
for(int i=0; i<number.length-2; i++) {
for(int j=i+1; j<number.length-1; j++) {
for(int k=j+1; k<number.length; k++) {
if(number[i] + number[j] + number[k] == 0) {
count++;
}
}
}
}
없는 숫자 더하기
나는 정렬 후 인덱스랑 값 비교해서 없는 숫자를 더하려고 했는데
논리적 오류가 있었음
근데 그냥 간단하게 45에서 numbers의 합을 빼면 되는거였음
ㅋㅋ..
가운데 글자 가져오기
char+char를 하면 두 문자의 유니코드 값이 더해져 int 타입 결과를 반환함
char를 String으로 변환한 뒤 문자열로 연결핑
if(n % 2 == 0) {
return s.substring(n/2-1, n/2+1);
} else {
return String.valueOf(s.charAt(n/2));
}
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스 Lv2] 전력망을 둘로 나누기 (1) | 2024.11.27 |
---|---|
11/25 오답노트 (2) | 2024.11.25 |
[프로그래머스 Lv2] JOIN(SQL) (0) | 2024.11.22 |
[프로그래머스 Lv1, Lv2] IS NULL(SQL) (1) | 2024.11.22 |
[프로그래머스 Lv2] GROUP BY(SQL) (1) | 2024.11.22 |