-
[프로그래머스 / JAVA] 카드 뭉치 (정답 풀이)코딩/코테준비(JAVA) 2025. 2. 12. 23:22
막히거나 틀린 부분이 있더라도, 그냥 그대로 내가 스스로 작성한 부분들을 기록하고 있다.
미래의 복기용으로 나를 위해 적어둔 기록이다.
(이 사람은 어떻게 실패하거나 성공했는지 살펴보는 용도로도 적합할 것 같다.)
goal의 길이 ≤ cards1의 길이 + cards2의 길이라는 점에 주의. (이거 생각 안 하고 풀면 정확성 88% 뜸)
이 주석을 새겨들을 필요가 있다.
나는 이 조건을 제대로 안 읽고 풀었다가, 두 번 다 정확성 88%가 떴었다.
goal을 다 탐색했을 때 카드뭉치에 카드가 남아있을 수 있다는 점을 염두하자.
나는 그냥 goal을 주인공으로 두고 얘를 순회하면서, cards1과 cards2의 앞부분(index 0)부터 검사해 주었다.
그러다가 같은 문자열이 나오면 해당 카드뭉치의 index를 1 증가시켜 주게끔 구현했다.
나머지 중요한 부분들은 코드 주석에 적어놓았다.
아 그리고 문자열 비교 시 == 말고 .equals()를 쓰도록 하자.
class Solution { public String solution(String[] cards1, String[] cards2, String[] goal) { int idx1=0, idx2=0; // cards1, cards2에서 검사하고 있는 인덱스 int n = cards1.length; int m = cards2.length; for(int i = 0; i < goal.length; i++) { if(idx1 < n && goal[i].equals(cards1[idx1])) { // idx1 < n 이조건 없으면 인덱스를 넘어갔는데도 참조해서 nullpointer exception 터질 수 있음 idx1++; } else if(idx2 < m && goal[i].equals(cards2[idx2])) { idx2++; } else { return "No"; } } // goal의 길이 ≤ cards1의 길이 + cards2의 길이라는점에 주의. (이거 생각 안하고 풀면 정확성 88%뜸) return "Yes"; } }
하루에 한 문제 이상 꾸준히 풀자.
실수는 많이 할수록, 더 많이 배울 수 있다.
https://school.programmers.co.kr/learn/courses/30/lessons/159994
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
'코딩 > 코테준비(JAVA)' 카테고리의 다른 글
[프로그래머스 / JAVA] 신고 결과 받기 (정답 풀이) (0) 2025.02.19 [프로그래머스 / JAVA] 기능개발 (정답풀이) (0) 2025.02.12 [프로그래머스 / JAVA] 크레인 인형뽑기 게임 (정답 풀이) (0) 2025.02.06 [프로그래머스 / JAVA] 주식 가격 (정답 풀이) (1) 2025.02.02 [프로그래머스 / JAVA] 짝지어 제거하기 (정답 코드) (0) 2025.02.01