728x90
반응형

Kotlin/Algorithm Problems 129

<프로그래머스> 배달(Lv.2)

[깃허브] https://github.com/heesoo-park/ForCodeKata/tree/main/%EB%B0%B0%EB%8B%AC [프로그래머스] https://school.programmers.co.kr/learn/courses/30/lessons/12978 아... 정말 쉽지 않았고 어떻게든 내가 선택한 알고리즘으로 마무리지을려고 하다보니 더 어려웠다. 이 문제는 시간초과와의 싸움이었다. 계속 수정하며 줄여나갔지만 끝내 자력으로는 부수지 못하고 도움을 받아 해결했다. 처음에는 오늘 풀었던 다른 문제인 전력망을 둘로 나누기 문제처럼 그래프라는 걸 인식하고 '어떤 형태로 그래프를 구성할까?' 라는 생각을 먼저 했다. 노드의 개수 제한은 50이라서 인접행렬로 할까 하다가 두 노드 사이의 길이 2개..

<프로그래머스> 전력망을 둘로 나누기(Lv.2)

[깃허브] https://github.com/heesoo-park/ForCodeKata/tree/main/%EC%A0%84%EB%A0%A5%EB%A7%9D%EC%9D%84%20%EB%91%98%EB%A1%9C%20%EB%82%98%EB%88%84%EA%B8%B0 [프로그래머스] https://school.programmers.co.kr/learn/courses/30/lessons/86971?language=kotlin 오랜만에 보는 트리(그래프) 문제였다. 그런데 상단 카테고리에 완전탐색을 보고는 마음이 좀 편해졌다. 그렇게 어렵지는 않겠구나 처음 알고리즘만 잘 잡으면 해결되겠다는 생각이 들었다. 난 인접 행렬로 그래프를 구성했다. 크기 제한이 최대 100이었기 때문이다. 그 후 각각의 노드에 양방향으로..

<프로그래머스> 메뉴 리뉴얼(Lv.2)

[깃허브] https://github.com/heesoo-park/ForCodeKata/tree/main/%EB%A9%94%EB%89%B4%20%EB%A6%AC%EB%89%B4%EC%96%BC [프로그래머스] https://school.programmers.co.kr/learn/courses/30/lessons/72411 진짜 문제 길다... 길어... 점점 익숙해져간다. 처음에 이렇게 긴 문제를 보면 심장이 막 뛰고 그랬는데 이제는 차분하게 읽기 시작한다. 이번에도 카카오에서 나왔던 문제였다. 조건에 맞는 코스메뉴 후보들을 뽑아내는 문제였는데 쉽지 않겠다는 생각이 들었고 그 생각을 문제 푸는 처음 1시간동안 했다. 그 말은... 진행을 못했다는 거다. 어디서부터 손을 대야하고 어떻게 만져야할지 감이 안..

<프로그래머스> 오픈채팅방(Lv.2)

[깃허브] https://github.com/heesoo-park/ForCodeKata/tree/main/%EC%98%A4%ED%94%88%EC%B1%84%ED%8C%85%EB%B0%A9 [프로그래머스] https://school.programmers.co.kr/learn/courses/30/lessons/42888 주말을 잘 보내고 월요일 첫 문제는 또 카카오에서 만든 문제였다. 쉽지 않겠다 생각하고 들어갔지만 생각보다는... 정말 생각보다는 금방 해결했다. 이 문제는 한 사이클을 완성하는데 시간이 걸렸지, 최적화해가는 과정은 쉽게 쉽게 했다. 카카오 문제답게 제일 처음에는 문자열 처리가 있었다. 저번에 풀었던 튜플 문제보다는 처리가 쉬웠다. 공백 기준으로만 나누면 됐기 때문이다. 그리고는 저장해놓은 ..

<프로그래머스> 튜플(Lv.2)

[깃허브] https://github.com/heesoo-park/ForCodeKata/tree/main/%ED%8A%9C%ED%94%8C [프로그래머스] https://school.programmers.co.kr/learn/courses/30/lessons/64065 문제 카테고리가 2019 카카오 개발자 겨울 인턴십으로 되어있더라 약간 더 긴장했다. '과연 나는 이것을 풀 수 있을 것인가...' 문제가 약간 길기도 하고 쓱 훑어봤을 때는 약간 이해가 되지 않았다. 그래도 여러번 읽다보니 이해했다.(설명을 잘 할 수 있을지는 모르겠지만) 튜플이란 무엇이고 성질은 무엇인가! 는 문제에 적혀있습니다. 문제 풀 때 필요했던 것들만 말해보면 먼저는 중복되는 원소가 없다는 거였다. 중복되는 원소가 있었다면 최종..

<프로그래머스> 행렬 테두리 회전하기(Lv.2)

[깃허브] https://github.com/heesoo-park/ForCodeKata/tree/main/%ED%96%89%EB%A0%AC%20%ED%85%8C%EB%91%90%EB%A6%AC%20%ED%9A%8C%EC%A0%84%ED%95%98%EA%B8%B0 [프로그래머스] https://school.programmers.co.kr/learn/courses/30/lessons/77485 행렬 크기 제한이 작아서 다행이라고 생각했던 문제였다. '지금보다 훨씬 컸다면 다른 방법을 생각해내야하지 않았을까?'라는 생각이 다 풀고 나서 들었다. 문제는 금방 이해했다. 주어지는 범위의 테두리값들을 오른쪽으로 한칸씩 회전시키고 그 중에 가장 작은 값을 뽑으면 되는 거다. 처음에 문제를 보고 '그냥 회전 안 시키고..

<프로그래머스> 무인도 여행(Lv.2)

[깃허브] https://github.com/heesoo-park/ForCodeKata/tree/main/%EB%AC%B4%EC%9D%B8%EB%8F%84%20%EC%97%AC%ED%96%89 [프로그래머스] https://school.programmers.co.kr/learn/courses/30/lessons/154540 문제를 딱 봤을 때 풀이방법이 번뜩 생각나는 경우에는 기분이 참 좋다~ 예제 설명을 보자마자 내가 전에 자바로 열심히 푸는 연습을 했었던 DFS, BFS 문제들이 스쳐지나가더라 배열 2개 만들고 좌표 배열 만들고 알고리즘 돌리고... 그렇게 했는데도 기억이 흐릿했다. 코틀린으로 2차원 BFS는 이 문제가 처음인 거 같다. 이 문제는 전체좌표를 돌면서 BFS를 진행했다. X가 아니고 이..

<프로그래머스> 두 큐 합 같게 만들기(Lv.2)

[깃허브] https://github.com/heesoo-park/ForCodeKata/tree/main/%EB%91%90%20%ED%81%90%20%ED%95%A9%20%EA%B0%99%EA%B2%8C%20%EB%A7%8C%EB%93%A4%EA%B8%B0 [프로그래머스] https://school.programmers.co.kr/learn/courses/30/lessons/118667 문제는 길었지만 생각보다 쉽게 풀리는 문제였다. 22년도 카카오 인턴쉽 문제였다는데 이게 아마 쉬운 문제에 속하는 게 아니었을까 생각이 든다. 이 문제는 제출했을 때 몇 번 틀렸지만 주된 알고리즘이 틀린 게 아니라 곁가지들이 틀렸던 거였다. 내가 짠 코드는 입력값들을 큐에 저장하고 큐를 순회하면서 값이 같지 않고 한쪽이 ..

<프로그래머스> 연속된 부분 수열의합(Lv.2)

[깃허브] https://github.com/heesoo-park/ForCodeKata/tree/main/%EC%97%B0%EC%86%8D%EB%90%9C%20%EB%B6%80%EB%B6%84%20%EC%88%98%EC%97%B4%EC%9D%98%20%ED%95%A9 [프로그래머스] https://school.programmers.co.kr/learn/courses/30/lessons/178870 DP로 하면 다... 될 줄 알았어..!! 하지만 안 뚫리는 문제였고(방법이 있겠지만 나는 혼자서 해결하지 못함) 마지막에는 다른 방법을 알아서 그 쪽으로 해결했다. 처음에는 부분 수열의 합이라고 그래서 누적합으로 생각하고 DP로 구현하는 방식을 선택했는데 그 누적합 배열을 반복문 2번을 돌게 되다보니까 시간초..

<프로그래머스> 삼각 달팽이(Lv.2)

[깃허브] https://github.com/heesoo-park/ForCodeKata/tree/main/%EC%82%BC%EA%B0%81%20%EB%8B%AC%ED%8C%BD%EC%9D%B4 [프로그래머스] https://school.programmers.co.kr/learn/courses/30/lessons/68645 이 문제를 보고는 내가 풀 수 있을까 싶은 생각이 먼저 들었다. 미리 겁먹는 느낌...? 그런데 생각보다 방법이 금방 떠올랐고 그 방법은 문제 해결로 이어졌다. 내가 생각한 방법은 각 방향을 대한 Boolean 값을 두고 조건에 따라서 방향을 바꾸도록 한 것이다. 반복문 한번으로 코드가 마무리된다. 물론 처음에는 실패가 떴다. 정확히는 시간초과다. 시간복잡도도 O(N)인 거 같고 사용하..

반응형