728x90
반응형

Kotlin 144

<백준> AC(Gold 5)

[깃허브] https://github.com/heesoo-park/ForCodeKata/tree/main/baekjoon%20%EB%AC%B8%EC%A0%9C%EC%A7%91/AC [백준] https://www.acmicpc.net/problem/5430 이 문제 무려 4달 전에 풀었었던 문제다. 하나도 기억이 안 났다. 거기에 자바로 풀었더라 그래서 새로운 마음으로 시작했다. 예외처리는 수행해야하는 함수의 D의 개수와 주어진 숫자의 개수를 비교했다. 문제를 보자마자 생각이 든 건 '이거 삽입 삭제가 좀 많으니까 StringBuilder를 쓰면 좋지 않을까?' 였다. 그래서 이를 기반으로 반복문을 돌려 StringBuilder의 함수들을 사용했다. 그런데 제출하니까 시간초과가 나오더라... 아마도 rev..

<프로그래머스> 하노이의 탑(Lv.2)

[깃허브] https://github.com/heesoo-park/ForCodeKata/tree/main/%ED%95%98%EB%85%B8%EC%9D%B4%EC%9D%98%20%ED%83%91 [프로그래머스] https://school.programmers.co.kr/learn/courses/30/lessons/12946 학교에서나 혼자 문제 풀 때 많이 봤었던 하노이 탑 문제였다. 그 때는 참 순서가 이해가 잘 이해가 안 갔었는데... 지금 와서 보니까 좀 쉽다는 생각은 들더라 하노이탑에서 가장 중요한 거는 n개 중에 n-1개를 먼저 보내려는 기둥말고 다른 기둥에 옮겼다가 남아 있던 1개를 옮긴 후에 보내려는 기둥에 옮기는 거다. 위의 말대로 그냥 코드를 작성했다. 재귀로 구현을 했고 n이 1일 때는 ..

<백준> 숨바꼭질 3(Gold 5)

[깃허브] https://github.com/heesoo-park/ForCodeKata/tree/main/baekjoon%20%EB%AC%B8%EC%A0%9C%EC%A7%91/%EC%88%A8%EB%B0%94%EA%BC%AD%EC%A7%88%203 [백준] https://www.acmicpc.net/problem/13549 문제에 대한 접근만 딱 정해지니까 쉽게 해결했던 문제지만 풀고나서 돌아보니까 좀 아쉬웠던 문제였다. 문제를 처음 보고는 DP가 생각났었는데 그냥 반복문으로 하는 건 아닌 거 같았다. 시간에 대한 처리가 나뉘어야하기 때문이다. 그래서 BFS를 사용하기로 했다. 각 움직임에 대해 처리를 해서 모든 경우의 수를 집어넣으면서 돌렸다. 시간을 BFS 함수 내의 변수로 둘까 하다가 사용성을 생각..

<백준> 토마토(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..

반응형