문제
https://school.programmers.co.kr/learn/courses/30/lessons/159994
코드
using System;
public class Solution {
public string solution(string[] cards1, string[] cards2, string[] goal) {
string answer = "";
int idx1 = 0;
int idx2 = 0;
for(int i=0;i<goal.Length;i++){
if(idx1<cards1.Length&&goal[i]==cards1[idx1]){
idx1++;
}
else if(idx2<cards2.Length&&goal[i]==cards2[idx2]){
idx2++;
}
else{
answer="No";
break;
}
}
if(String.IsNullOrEmpty(answer))
answer="Yes";
return answer;
}
}
풀이
goal의 문자열들을 순회하면서 cards1과 cards2 각각의 사용하지 않은 카드 중 맨 앞 순서 카드의 문자열이 goal의 문자열과 같은지를 확인한다.
cards1의 현 문자열(cards1[idx1])과 goal의 현 문자열(goal[i])이 같은지를 확인하고 같다면 카드를 사용하였다는 의미로 idx1을 1 증가시킨다.(다음 카드를 사용한다는 의미)
(참고로 초반에 idx1<cards1.Length를 안넣었어서 에러났었던 슬픈 비밀....)
cards1의 카드를 사용할 수 없었다면 cards2의 카드를 사용할 수 있는지 비교해본다.
사용할 수 있다면 사용하였다는 의미로 idx2를 1 증가시킨다.(다음 카드를 사용한다는 의미)
둘다 사용할 수 없다면 만들 수 없는 문자열이므로 answer에 "No"를 대입하고 for문을 빠져나온다.
answer가 빈 문자열이라면 goal 문자열을 만드는데 성공하였다는 의미이므로 answer에 "Yes"를 대입해준다.
그러고 반환하면 끝!
참고
String.IsNullOrEmpty(문자열): 문자열이 null이거나 빈 문자열("")인지 확인하는 메서드.
bool을 반환(null이거나 빈 문자열이면 true 반환, 아니라면 false 반환)
String.IsNullOrWhiteSpace(문자열): 문자열이 null이거나 빈 문자열이거나 공백 문자열(" ")인지 확인하는 메서드.
IsNullOrEmpty와 마찬가지로 bool을 반환(null, 빈 문자열, 공백 문자열이면 true반환)
'코테 > 프로그래머스' 카테고리의 다른 글
[프로그래머스/C++] 과제 진행하기 (0) | 2024.05.07 |
---|---|
[프로그래머스/C++] 바탕화면 정리 (0) | 2024.05.07 |
[프로그래머스/C#] N으로 표현 (0) | 2024.04.19 |
[프로그래머스/C#] 점프와 순간 이동 (0) | 2024.04.11 |
[프로그래머스/C#] 괄호 회전하기 (0) | 2024.03.27 |