본문 바로가기
개인 공부/TIL

[ TIL - PGS ] 99클럽 코테 스터디 7일차 TIL + 오늘의 학습 가이드

by 킴도비 2024. 7. 28.

💡 오늘의 학습 키워드

  • 스택, 큐(는 쓰지 않는..)
  • 하노이의 탑

 

✅ 오늘 공부한 내용

  • 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 문제 풀기
  • 내일 페어 프로그래밍시 시간 남는다면 다른 분께 오늘 문제 한번 여쭤보고 안되면 멘토님께 여쭤보기
  • 책 읽기