💡 오늘의 학습 키워드
- 스택, 큐(는 쓰지 않는..)
- 하노이의 탑
✅ 오늘 공부한 내용
- ArrayList에 int[] 배열 사용하기
- 하노이 탑 전용 재귀 함수 짜기
- stream으로 int[][] 배열 채우기
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
- 오늘의 프로그래머스 문제! 하노이의 탑
👀 오늘의 회고
🤣 오늘의 문제점
- 오늘은 그냥 문제가 문제였다
- 모든 사람이 말하길 제일 아래 판을 최종 목적지에 옮기고 나머지 판을 다른데 옮겨 놨다가 그것을 그대로 최종 목적지에 옮기는게 핵심이라고 한다.
🔥 어떤 시도를 했는가?
- 솔직히 시도는 많이 했었다. 초반에 stack도 3개나 만들어보고, hashmap도 만들어 보았지만 start, end로 목적지를 정한다 했을 때 이 셋을 다 활용하기엔 무리가 있는 알고리즘만 계속 생각에 났었다.
- 그래서 한시간 정도 시도해 보다가 질문하기를 보니 도움을 주시는 분이 계셨다.
- 규칙 찾기 1, 규칙 찾기 2, 하노이의 탑 설명 을 참고했으나 이론만 이해가 되고 도저히 알고리즘적으로 접근하기가 어려워 gpt한테 설명을 시켰으나 대실패하였다.
- 결국은 블로그 답안을 찾아서 해설을 시켰으나 이해 하는 게 너어어무 어려워서..다음에 머리가 잘 돌아갈 때 다시 찬찬히 분석해야겠다는 결론이 내려졌다.
- 아래처럼 수십 번과 몇 시간을 사용하며 그려보았으나 이해하기 힘들어서 다음으로 미루기로 하였다.
👏 무엇을 새로 알았는가?
- ArrayList에 int[]를 넣어서 [[ x, y], ... ] 형식으로 쓸 수 있다는 것도 처음 알았고..
- stream 사용 시 int[][]::new 로 값을 넣을 수 있다는 것도 배웠다.
- 하노이의 법칙은 저렇게 재귀를 사용해야 한다는 것도 배웠다.
import java.util.*;
class Solution {
private static List<int[]> arr = new ArrayList<>();
public int[][] solution(int n) {
move(n, 1, 2, 3);
int[][] answer = arr.stream()
.toArray(int[][]::new);
return answer;
}
private static void move(int cnt, int start, int mid, int end) {
if (cnt == 0) {
return;
}
move(cnt - 1, start, end, mid);
arr.add(new int[]{start, end});
move(cnt - 1, mid, start, end);
}
}
👩💻 내일은 무엇을 학습할 것인가?
- 항해99 문제 풀기
- 내일 페어 프로그래밍시 시간 남는다면 다른 분께 오늘 문제 한번 여쭤보고 안되면 멘토님께 여쭤보기
- 책 읽기
'개인 공부 > TIL' 카테고리의 다른 글
[ TIL - PGS ] 99클럽 코테 스터디 9일차 TIL + 오늘의 학습 가이드 (0) | 2024.07.30 |
---|---|
[ TIL - PGS ] 99클럽 코테 스터디 8일차 TIL + 오늘의 학습 가이드 (0) | 2024.07.29 |
[ TIL - PGS ] 99클럽 코테 스터디 6일차 TIL + 오늘의 학습 가이드 (0) | 2024.07.27 |
[ TIL - PGS ] 99클럽 코테 스터디 5일차 TIL + 오늘의 학습 가이드 (0) | 2024.07.26 |
[ TIL - PGS ] 99클럽 코테 스터디 4일차 TIL + 오늘의 학습 가이드 (0) | 2024.07.25 |