728x90
반응형

Kotlin/Algorithm Problems 129

<백준> 토마토(Gold 5)

[깃허브] https://github.com/heesoo-park/ForCodeKata/tree/main/baekjoon%20%EB%AC%B8%EC%A0%9C%EC%A7%91/%ED%86%A0%EB%A7%88%ED%86%A0 [백준] https://www.acmicpc.net/problem/7576 뒤의 BFS를 작성하는 것보다 입력받는게 힘들었다. 정말 2차원 배열 입력받을 때는 자바나 C가 조금 그리워진다. 프로그래머스 문제와 다르게 백준에서는 입력부터 시작이기 때문에 진짜 익숙치가 않다. 정말 다양하게 입력을 받았다. with 사용해보고 repeat도 사용해봤다. 2차원 배열 원소 개수 구하는 것도 조금 복잡했다. count 함수를 중첩시켜 했는데 이게 맞나...? 싶다. 이후 BFS를 진행할 때는..

<프로그래머스> 테이블 해시 함수(Lv.2)

[깃허브] https://github.com/heesoo-park/ForCodeKata/tree/main/%ED%85%8C%EC%9D%B4%EB%B8%94%20%ED%95%B4%EC%8B%9C%20%ED%95%A8%EC%88%98 [프로그래머스] https://school.programmers.co.kr/learn/courses/30/lessons/147354 생각보다 쉽게 접근하고 풀어냈던 문제였다. 정렬 방법과 누적값을 구하는 방법만 조금 고민했고 그외에는 간단했다. 정렬은 두 가지의 정렬 기준이 있었기 때문에 sortedWith를 사용했다. 그리고 compareBy로 각각의 정렬 기준을 작성했고 내림차순으로 정렬되어야하는 정렬 기준은 -를 붙여줬다. -를 붙여줌으로 해당 숫자의 클수록 앞으로 가게 ..

<프로그래머스> 멀쩡한 사각형(Lv.2)

[깃허브] https://github.com/heesoo-park/ForCodeKata/tree/main/%EB%A9%80%EC%A9%A1%ED%95%9C%20%EC%82%AC%EA%B0%81%ED%98%95 [프로그래머스] https://school.programmers.co.kr/learn/courses/30/lessons/62048 진짜 이 문제는 거의 다 접근하고 마지막 열쇠를 얻지 못해서 자력으로 해결하지 못한 문제였다. 최대공약수를 사용해서 반복되는 패턴을 찾아내는 것이 중요하다는 것까지 알았지만 패턴이 보이지가 않더라... 이번에 최대공약수를 구할 때 반복문이 아닌 재귀로 구해봤다. 생각보다 간단했다. 반복문으로 하지 않은 이유는 파라미터로 들어온 값의 변경이 코틀린에서는 가능하지 않기 때문..

<프로그래머스> 점 찍기(Lv.2)

[깃허브] https://github.com/heesoo-park/ForCodeKata/tree/main/%EC%A0%90%20%EC%B0%8D%EA%B8%B0 [프로그래머스] https://school.programmers.co.kr/learn/courses/30/lessons/140107 또 엄청 큰 숫자까지 고려해야하는 문제였다. 그냥 보면 2중반복문이 바로 떠오르는 문제였지만 너무 그게 보여서 손을 댈 수가 없었다. 그런데 단일 반복문으로 할 수 있는 방법이 생각났다. 바로 거리 공식을 이용하는 것이다. a^2 + b^2 = c^2 말이다. 0부터 숫자를 k만큼 늘려가면서 제곱한 수를 d^2에서 뺐다. 그러면 x좌표가 어떤 값일 때 최대 y좌표값을 얻을 수 있다. 원을 생각하면 편하다. 거기서 최..

<프로그래머스> 숫자 카드 나누기(Lv.2)

[깃허브] https://github.com/heesoo-park/ForCodeKata/tree/main/%EC%88%AB%EC%9E%90%20%EC%B9%B4%EB%93%9C%20%EB%82%98%EB%88%84%EA%B8%B0 [프로그래머스] https://school.programmers.co.kr/learn/courses/30/lessons/135807 즐겁게 휴식으로 새해를 시작하고 처음 푼 문제 아주 생각보다 가볍게 풀렸다. 숫자도 엄청 크고 그래서 쉽게 풀리지 않을 줄 알았는데 30분정도만에 푼 거 같다. 보자마자 먼저 숫자가 크기 때문에 2중 반복문을 쌩으로 주어진 입력 배열에다가 하면 안 되겠다는 생각이 들었다. 그리고 '카드들에 적힌 모든 숫자를 나눌 수 있거나 없거나'라는 조건이 있었..

<프로그래머스> 시소 짝꿍(Lv.2)

[깃허브] https://github.com/heesoo-park/ForCodeKata/tree/main/%EC%8B%9C%EC%86%8C%20%EC%A7%9D%EA%BF%8D [프로그래머스] https://school.programmers.co.kr/learn/courses/30/lessons/152996 아주 오래 걸렸다... 어제부터 시작했는데 어제 시간 안에 못 끝내서 오늘까지 이어지고 많은 실패 끝에 통과한 문제 문제는 아주 간단하고 쉬운 줄 알았는데 크기가 커지니까 쉽지 않더라 가장 처음에는 완전탐색으로 갔다. 그랬다가 바로 메모리초과를 맞아버렸다. 조합을 만드는 과정에서 이러한 문제가 발생한 것으로 보인다. 조합, 최대공약수를 이용한 풀이로 가장 이해하기 쉬웠지만 크기가 큰 문제에서는 해결책..

[프로그래머스] 수식 최대화(Lv.2)

[깃허브] https://github.com/heesoo-park/ForCodeKata/tree/main/%EC%88%98%EC%8B%9D%20%EC%B5%9C%EB%8C%80%ED%99%94 [프로그래머스] https://school.programmers.co.kr/learn/courses/30/lessons/67257 쉽지 않은 문제였고 그만큼 오래 걸린 문제였다. 팀플 때문에 바빴기도 했다. 그래도 자력으로 풀어내어 아주 기분이 좋다. forEach를 아주 신명나게 썼다. 해당 방법으로 작성한 코드는 다음과 같다. import kotlin.math.abs class Solution { fun solution(expression: String): Long { var answer: Long = 0 va..

<프로그래머스> 괄호 변환(Lv.2)

[깃허브] https://github.com/heesoo-park/ForCodeKata/tree/main/%EA%B4%84%ED%98%B8%20%EB%B3%80%ED%99%98 [프로그래머스] https://school.programmers.co.kr/learn/courses/30/lessons/60058 문제를 이해하는데 시간이 오래 걸렸지 코드를 작성하는 건 그렇게 오래 걸리지 않은 문제였다. 기본적으로 문제 지문이 아주 세세해서 그대로 따라만 가도 풀렸다. 물론 내가 재귀를 잘 다루지 못 했다면 그냥 벽에 부딪혔겠지만 다행히 여러번 풀어왔었기에 잘 통과했다. 이 문제도 카카오에서 낸 문제였는데 거의 30분 정도만에 풀었던 거 같다. 보통 지금까지 풀었던 괄호문제는 올바른 괄호인지 아닌지까지만 갔는데..

<프로그래머스> 마법의 엘리베이터(Lv.2)

[깃허브] https://github.com/heesoo-park/ForCodeKata/tree/main/%EB%A7%88%EB%B2%95%EC%9D%98%20%EC%97%98%EB%A6%AC%EB%B2%A0%EC%9D%B4%ED%84%B0 [프로그래머스] https://school.programmers.co.kr/learn/courses/30/lessons/148653 이 문제는 그냥 자력으로는 못 풀었다. 내가 생각하고 진행했던 방식으로는 끝까지 해도 풀어내지 못했을 것이다. 처음에 이 문제를 딱 보고 생각났던 문제는 1로 만들기나 피로도같은 문제들이었다. 해당 문제들은 재귀나 DP(메모이제이션)의 유형이었다. 그래서 그렇게 접근하려는데 숫자 최대 제한이 100000000...?! 1억을 배열의 크기..

<프로그래머스> 호텔 대실(Lv.2)

[깃허브] https://github.com/heesoo-park/ForCodeKata/tree/main/%ED%98%B8%ED%85%94%20%EB%8C%80%EC%8B%A4 [프로그래머스] https://school.programmers.co.kr/learn/courses/30/lessons/155651 뭔가 문제를 볼 때 필요하거나 가질 수 있는 최소, 최대 값 결과를 원하다면 약간 식은땀이 나고 머릿속에서 '어떤 어려운 알고리즘이 필요한 거지?'라는 생각이 가장 먼저 드는 것 같다. 이 문제도 약간 그렇게 시작을 했다. 그래도 머릿속에 떠오른 방법이 있어서 그걸 붙잡고 한발자국씩 걸었다. 여기서 시간을 비교해야했기 때문에 LocalTime이 떠올랐다. 내가 생각해도 신기한 부분인데 보통은 시간이 ..

반응형