☑️ 문제: 카드 뭉치
https://school.programmers.co.kr/learn/courses/30/lessons/159994
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
☑️ Code
처음 봤을 때, 재귀를 사용해서 백트래킹으로 푸는 방식을 떠올렸다.
cards1과 cards2의 길이가 각각 10이라서 그렇게 풀어도 시간적인 문제가 없을 거라고 생각했기 때문이다.
하지만, 순서대로 뽑아야만 한다는 조건이 모든 경우를 탐색하지 않아도 되게 만든다는 사실을 스터디를 통해서 알게 되었다. 그걸 깨닫고 난 다음 원래 풀었던 재귀 함수를 수정했다.
class Solution {
public String solution(String[] cards1, String[] cards2, String[] goal) {
return choose(cards1, cards2, goal, 0, 0, false) ? "Yes" : "No";
}
boolean choose(String[] cards1, String[] cards2, String[] goal, int index1, int index2, boolean found) {
int count = index1 + index2;
if (count == goal.length) {
return true;
}
if (index1 < cards1.length && goal[count].equals(cards1[index1])) {
index1++;
if (choose(cards1, cards2, goal, index1, index2, found)) {
found = true;
}
index1--;
}
if (index2 < cards2.length && goal[count].equals(cards2[index2])) {
index2++;
if (choose(cards1, cards2, goal, index1, index2, found)) {
found = true;
}
index2--;
}
return found;
}
}
더보기
오늘 스터디에서 인상 깊었던 다른 분이 푸셨던 방식
상당히 깔끔하고, 이해가 쉬운 코드라고 생각했다.
코드를 보여주실 때 테스트 코드로 검증하는 걸 보여주셨는데, 나도 한번 해봐야겠다.
class Solution {
public String solution(String[] cards1, String[] cards2, String[] goal) {
int index1 = 0;
int index2 = 0;
for(String word : goal){
if(index1 < cards1.length && word.equals(cards1[index1])){
index1++;
continue;
} else if(index2 < cards2.length && word.equals(cards2[index2])){
index2++;
continue;
}
return "No";
}
return "Yes";
}
}
상당히 깔끔하고, 이해가 쉬운 코드라고 생각했다.
코드를 보여주실 때 테스트 코드로 검증하는 걸 보여주셨는데, 나도 한번 해봐야겠다.
- 순서대로 뽑아야만 한다는 조건이 코드를 간결하게 해주는 문제였다.
- Queue로도 푼 사람이 있었고, ArrayList로도 푼 사람이 있었다. 다양한 풀이가 나오는 문제였다.
☑️ 복습
Android
- Column, Row는 각각 Vertical, Horizontal하게 순서대로 컴포넌트가 쌓인다
- Box는 default가 중첩되는 것이다.
- Box에서 align을 준다면, Box 전체 컴포넌트들이 해당 align 위치에서 중첩되어 쌓인다.
사용 예시로, 체크 표시가 있는 사용자 프로필이 있다. - 각각 컴포넌트마다 위치를 수정하고 싶다면, 각 컴포넌트마다 align이라는 속성을 써줘야 한다.
- Box에서 align을 준다면, Box 전체 컴포넌트들이 해당 align 위치에서 중첩되어 쌓인다.
'TIL (Today I Learned)' 카테고리의 다른 글
99클럽 코테 스터디 13일차 TIL + 오늘의 학습 키워드 (0) | 2024.08.04 |
---|---|
99클럽 코테 스터디 12일차 TIL + 오늘의 학습 키워드 (0) | 2024.08.03 |
99클럽 코테 스터디 10일차 TIL + 오늘의 학습 키워드 (0) | 2024.08.01 |
99클럽 코테 스터디 9일차 TIL + 오늘의 학습 키워드 (0) | 2024.07.31 |
99클럽 코테 스터디 8일차 TIL + 오늘의 학습 키워드 (0) | 2024.07.29 |