Contents
https://school.programmers.co.kr/learn/courses/30/lessons/159994
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
일단 문제 길이가 너무너무 길다. 읽다가 이해하는 데 시간 다 간다 그냥
아무튼 문제를 요약하자면
cards1과 cards2의 문자열들로 goal에 있는대로 나와야한다.
단, 밑장빼기는 안된다.
2번 케이스를 보면
cards1[] = ["i", "water", "drink"]
cards2[] = ["want", "to"]
로 "drink"가 "water" 뒤에 있다
이러면 "i want to drink water"를 밑장빼기가 아닌 이상 만들어 낼 수가 없다
코드 보시죠
class Solution { // 카드 뭉치
public String solution(String[] cards1, String[] cards2, String[] goal) {
String answer = "Yes";
int c1 = 0, c2 = 0; // c1 = cards1의 인덱스, c2 = cards2의 인덱스
for (int i = 0; i < goal.length; i++) {
// c1과 cards1의 길이비교, 값비교
if (c1 < cards1.length && goal[i].equals(cards1[c1])) {
c1++;
} else if (c2 < cards2.length && goal[i].equals(cards2[c2])) {
c2++;
} else { // c1, c2 둘다 안되면 No 반환
return "No";
}
}
return answer;
}
}
c1, c2로 cards1과 cards2의 인덱스 번호를 0으로 초기화해주고 시작했습니다.
만약 c1(c2)이 cards1.length(cards2.length)보다 작고 goal[i]와 문자열이 일치한다면 인덱스 번호를 올려줍니다
그렇지 않다면 바로 "No"를 반환하죠
무사히 goal.length의 크기만큼 반복을 끝냈다면 answer의 초기값인 "Yes"가 반환됩니다
쬐큼 어려웠음 설명이 어렵네요
'프로그래머스' 카테고리의 다른 글
[프로그래머스] 옹알이 (2) (JAVA) (2) | 2024.06.25 |
---|---|
[프로그래머스] 명예의 전당 (1) (JAVA) (1) | 2024.03.30 |
[프로그래머스] JadenCase 문자열 만들기 (JAVA) (4) | 2024.03.27 |
[프로그래머스] 두 개 뽑아서 더하기 (JAVA) (1) | 2024.03.27 |
[프로그래머스] 내적 (JAVA) (2) | 2024.03.14 |