프로그래머스 3

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

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

[Kotlin/프로그래머스] 다리를 지나는 트럭

[문제소개] 트럭을 1칸, 다리를 N (문제의 bridge_length) 칸이라고 했을 때 각 트럭 무게와 다리 무게제한을 고려하여 모든 트럭이 지나가는 데 걸리는 초를 구하는 문제 코딩테스트 연습 - 다리를 지나는 트럭 트럭 여러 대가 강을 가로지르는 일차선 다리를 정해진 순으로 건너려 합니다. 모든 트럭이 다리를 건너려면 최소 몇 초가 걸리는지 알아내야 합니다. 다리에는 트럭이 최대 bridge_length대 올라갈 programmers.co.kr [나의 풀이] 일단 매 초마다 루프를 돌면서 각 반복마다 일차원 조회를 하면 O(N^2) 이고 N 이 10000이므로 시간초과가 날 가능성 때문에 O(N) 으로 풀 수 있는 방법을 고민했다. 그렇다 해도 입력에 따라 결과가 달라지고 경우의 수도 많으므로 시..

[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란 사람에 의해 ..