반응형
https://school.programmers.co.kr/learn/courses/30/lessons/159994
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
using System;
public class Solution {
/// <summary>
/// 카드 뭉치 https://school.programmers.co.kr/learn/courses/30/lessons/159994
/// </summary>
public string solution(string[] cards1, string[] cards2, string[] goal) {
string answer = "No";
int card1Idx = 0;
int card2Idx = 0;
int goalIdx = 0;
int card1Len = cards1.Length;
int card2Len = cards2.Length;
int goalLen = goal.Length;
// 카드 뭉치 2개로 목표인 goal을 만들어야 하므로 2개 인덱스를 돌리는 것을 생각
while (goalIdx < goalLen && (card1Idx < card1Len || card2Idx < card2Len))
{
string currentGoal = goal[goalIdx];
string currentCard1 = cards1.Length <= card1Idx ? null : cards1[card1Idx];
string currentCard2 = cards2.Length <= card2Idx ? null : cards2[card2Idx];
if (currentGoal.Equals(currentCard1) || currentGoal.Equals(currentCard2))
{
if (currentGoal.Equals(currentCard1))
{
card1Idx++;
}
else if (currentGoal.Equals(currentCard2))
{
card2Idx++;
}
goalIdx++;
if (goalIdx >= goalLen)
{
answer = "Yes";
break;
}
}
else
{
break;
}
}
return answer;
}
}
internal class Program
{
public static void Main(string[] args)
{
string[] cards1 = new string[] { "i", "water", "drink" };
string[] cards2 = new string[] { "want", "to" };
string[] goal = new string[] {"i", "want", "to", "drink", "water"};
var sl = new Solution();
var str = sl.solution(cards1, cards2, goal);
Console.WriteLine(str);
}
}
문제를 해결할 방법을 생각할 때 카드 뭉치 2개에서 원하는 목표 문장을 만들어야 하고 순서가 보장되는 형태로 되고 있어서, 일단 각각 인덱스를 만들고 하나의 반복문 안에서 순회시키는 방향을 생각. 구조적으로 깔끔하게 나온 코드는 아니어서 확장성이나 그런 면에서 조금 아쉬움이 생기는 듯 하다. (Ex. 카드 뭉치가 늘어난다거나 하는 경우 어떻게 코드를 확장 가능할까의 문제가 생기면 계속 인덱스를 정의 하고 선언하는 부분이 계속 늘어 나야 함. 구조화를 하면 스택과 같은 곳에 카드 뭉치를 넣고 빼는 것도 가능하지 않을까 싶긴 함. )
반응형
'Coding Test > Programmers' 카테고리의 다른 글
[Lv.1] 성격 유형 검사하기 [프로그래머스_코딩테스트] [2022 KAKAO TECH INTERNSHIP] (0) | 2025.05.11 |
---|---|
[Lv.1] 문자열 나누기 [프로그래머스_코딩테스트] (0) | 2025.05.11 |
[Lv.1] 과일 장수 [프로그래머스_코딩테스트] (0) | 2025.05.09 |
[Lv.1] 가장 가까운 같은 글자 [프로그래머스_코딩테스트] (0) | 2025.05.09 |
프로그래머스 코딩테스트 컴파일 옵션 기록용 (0) | 2025.05.09 |