programmers 3

[Programmers/Kotlin] 조이스틱 (브루트포스 풀이, 오히려 빠르다?)

[도입] 아마 프로그래머스에서 코딩테스트 준비해본 사람 중 이 문제 모르는 사람 없을 것 같다. 고득점 Kit 의 그리디 편에 수록된 문제이다. 나는 그리디로 풀려고 노력하다가 시간이 너무 오래걸려서 일단 브루트포스로 풀어보았다. (그리디 방법을 모색할 때마다 반례를 찾아서.. 그리디를 통과하는 코드를 찾아서 뭔지 묵혀두고 공부해야겠다.) 브루트포스로 이 문제를 푼다고했을 때, 이 문제의 핵심은 A가 아닌 모든 알파벳의 위치를 방문하는 최소의 움직임 수라고 생각한다. 왜냐하면 알파벳을 바꾸는 것은 +- 연산만으로도 충분하고 따로 작업할 수 있기 때문이다. 이 문제 브루트포스로 풀면 시간초과 나지 않냐? 고 하시는 분을 위해 말씀드리자면 name 의 길이가 최대 20(N 이라 하자)이라 가능하다고 본다. ..

[Programmers/Kotlin] 여행 경로 (DFS)

[도입] 오랜만에 괜찮다고 생각되는 문제를 만나서 글을 작성하게된다. 문제는 굉장히 간단하다. 출발공항, 도착공항 쌍으로 이루어진 티켓들이 주어지는데, 이 티켓을 모두 사용(이게 이 문제의 핵심이다.)하는 공항경로를 만드는 문제이다. 공항을 정점이라고 했을 때, 보통 정점을 모두 방문하는 문제를 많이 풀어본 사람으로서 (그래서 BFS, DFS 시 정점을 위주로 방문여부를 확인) 좀 당황했었다. 문제에 대한 자세한 내용은 아래를 참고한다. 코딩테스트 연습 - 여행경로 [["ICN", "SFO"], ["ICN", "ATL"], ["SFO", "ATL"], ["ATL", "ICN"], ["ATL","SFO"]] ["ICN", "ATL", "ICN", "SFO", "ATL", "SFO"] programmers...

[Kotlin/프로그래머스] 콜라츠 추측

요즘 코틀린의 문법에 빠르게 익숙해지기 위해 프로그래머스 Level 1 부터 문제를 풀어보고 있다. 알고리즘 풀다가 자주 마주하는 Int 오버플로우 문제가 나와서 실수하지 않기 위해서 글을 작성한다. 문제 소개 정수가 하나 주어지면 아래와 같은 과정을 거쳐서 1이되는데 몇번이나 그 과정을 거쳐야하는지 반환하는 문제이다. ( 자세한 문제 내용은 아래 링크에서 확인 ) 1-1. 입력된 수가 짝수라면 2로 나눕니다. 1-2. 입력된 수가 홀수라면 3을 곱하고 1을 더합니다. 2. 결과로 나온 수에 같은 작업을 1이 될 때까지 반복합니다. https://programmers.co.kr/learn/courses/30/lessons/12943 코딩테스트 연습 - 콜라츠 추측 1937년 Collatz란 사람에 의해 ..