728x90
반응형

Kotlin/Algorithm Problems 129

<프로그래머스> 큰 수 만들기(Lv.2)

[깃허브] https://github.com/heesoo-park/ForCodeKata/tree/main/%ED%81%B0%20%EC%88%98%20%EB%A7%8C%EB%93%A4%EA%B8%B0 [프로그래머스] https://school.programmers.co.kr/learn/courses/30/lessons/42883 문제를 보면 알 수 있다시피 매우 간결하다. 이런 문제가 보통 어려운 경우가 많았던 거 같아서 긴장하고 시작했다. 처음에 문제를 보면서 생각한 방법은 당연히 순열이었지만 최대 1000000개의 숫자에서 k개를 뽑는다...? 이건 그냥 시간초과를 알아서 가지고 가는 것과 다름없다는 생각이 들어서 패스했다. 그리고 카테고리를 봤는데 그리디가 써있었다. 현재 상황에 가장 좋은 결과를 가..

<프로그래머스> 택배상자(Lv.2)

[깃허브] https://github.com/heesoo-park/ForCodeKata [프로그래머스] https://school.programmers.co.kr/learn/courses/30/lessons/131704 글이 많아서 약간 풀기도 전에 질릴 뻔 했지만 차분히 마음을 가라앉히고 보니까 생각보다 간단해보이는 문제였다. 주어지는 조건들에서 ArrayDeque를 써야겠다는 생각이 들더라 서브 컨테이너 벨트의 뒤에서만 택배를 빼야하기 때문이다. 이후에는 쉽게 진행되었다. 실어야하는 순서를 보며 서브 컨테이너에 넣을지, 트럭에 실을지, 종료시킬지 정하기만 하면 되더라 물론 숫자가 1000000까지라서 시간이 걸릴까 걱정했지만 걸리지 않았다. (정확히 모르겠어서 질문을 통해 알아봐야겠다.) isBrea..

<프로그래머스> 쿼드압축 후 개수 세기(Lv.2)

[깃허브] https://github.com/heesoo-park/ForCodeKata/tree/main/%EC%BF%BC%EB%93%9C%EC%95%95%EC%B6%95%20%ED%9B%84%20%EA%B0%9C%EC%88%98%20%EC%84%B8%EA%B8%B0 [프로그래머스] https://school.programmers.co.kr/learn/courses/30/lessons/68936 이 문제는 분명 내가 해결했다고 생각했는데 제출하고 나서 엄청난 실패가 나와서 당황했다. 그리고나서는 다른 방법이 생각나지 않아 다른 사람들의 풀이를 참고하여 결과를 얻었다. 처음에 푼 방식은 반복문을 활용한 방식이었다. 기준이 되는 한 칸을 기준으로 주변 기준칸과 비교하는 식이었다. 말로 하니까 좀 이해하기가 ..

<프로그래머스> 소수 찾기(Lv.2)

[깃허브] https://github.com/heesoo-park/ForCodeKata/tree/main/%EC%86%8C%EC%88%98%20%EC%B0%BE%EA%B8%B0 [프로그래머스] https://school.programmers.co.kr/learn/courses/30/lessons/42839 정말 오랜만에 1시간 안쪽으로 마무리한 문제였다. 이전에 풀었던 문제들의 조합으로 해결할 수 있어서 뿌듯한 것도 있었다. 거기다 시간도 상당히 짧게 나온 거 같아 만족했다. 이 문제는 완전탐색 유형의 문제였다. 카테고리에 써 있기도 했지만 주어지는 문자열 자체도 짧았기 때문에 바로 완전탐색이 떠올랐다. 이 문제에서 내가 생각한 키워드는 3가지다. StringBuilder, 순열, 소수 판별 String..

<프로그래머스> 가장 큰 수(Lv.2)

[깃허브] https://github.com/heesoo-park/ForCodeKata/tree/main/%EA%B0%80%EC%9E%A5%20%ED%81%B0%20%EC%88%98 [프로그래머스] https://school.programmers.co.kr/learn/courses/30/lessons/42746 이 문제는 제대로 막혔다. 문제를 보고 문자열로 정렬을 해서 값을 내야한다고 생각이 들었지만 그 정렬 방법이 떠오르지 않더라 첫째자리수 비교, 길이 비교 이런 식으로 처음에 했었는데 이렇게 하면 자릿수마다 다 비교를 해야해서 시간이 늘어날 것이었다. 그리고 예외 케이스도 존재했다. 예제에서 34 다음에 30이 아니라 3이 나올 때에 그 충격이란.... 어떻게 보면 거기에서 충격을 먹고 약간 멘탈이..

<프로그래머스> 다리를 지나는 트럭(Lv.2)

[깃허브] https://github.com/heesoo-park/ForCodeKata/tree/main/%EB%8B%A4%EB%A6%AC%EB%A5%BC%20%EC%A7%80%EB%82%98%EB%8A%94%20%ED%8A%B8%EB%9F%AD [프로그래머스] https://school.programmers.co.kr/learn/courses/30/lessons/42583 아... 정말 테스트케이스를 다 틀리면 완전 갈아엎어서 다시 진행할텐데 1~2개만 틀렸을 때는 그게 쉽게 안 된다. 이번 문제가 진짜 그랬다. 그래서 뭐가 문제이고 어떤 케이스가 문제가 나는건가 고민하고 수정하는데만 1시간은 쓴 거 같다... 해결해서 정말 후련하면서도 완전히 그 반례를 찾아내지 못한 거에 대해서는 아쉬움이 남는다. ..

<프로그래머스> 2개 이하로 다른 비트(Lv.2)

[깃허브] https://github.com/heesoo-park/ForCodeKata/tree/main/2%EA%B0%9C%20%EC%9D%B4%ED%95%98%EB%A1%9C%20%EB%8B%A4%EB%A5%B8%20%EB%B9%84%ED%8A%B8 [프로그래머스] https://school.programmers.co.kr/learn/courses/30/lessons/77885 어제 문제를 풀고 잠시 이 문제 지문을 읽어 봤었는데 그 때 '아.. 비트 연산이겠구나' 하고 창을 닫았었다.ㅎㅎ 오늘 이 문제를 차근차근 읽고 생각해보면 진행할 때 나름 간단한 규칙으로 해결할 수 있다. 진법 변환에 관련된 메소드 만드신 분 사랑합니다~! 물론!! 처음에는 틀렸다. 찍어먹어봐야 아는 것처럼 오늘도 가장 먼저 ..

<프로그래머스> 숫자 변환하기(Lv.2)

[깃허브] https://github.com/heesoo-park/ForCodeKata/tree/main/%EC%88%AB%EC%9E%90%20%EB%B3%80%ED%99%98%ED%95%98%EA%B8%B0 [프로그래머스] https://school.programmers.co.kr/learn/courses/30/lessons/154538 문제 지문이 짧으면 짧을수록 나의 마음은 더욱 떨려온다... 그래도 이 문제는 금방 풀 수 있었다. 그건 바로 이러한 유형의 문제들을 풀었던 경험이 남아있었기 때문이다. 문제를 보자마자 생각이 든 것은 DP였다. 최소 연산 횟수라는 말이 가장 큰 포인트였다. 그렇게 보게 되니까 DP 문제 중에 유명한(?) 문제 중에 하나인 '1로 만들기' 문제가 생각나서 그 방식대로 ..

<프로그래머스> 롤케이크 자르기(Lv.2)

[깃허브] https://github.com/heesoo-park/ForCodeKata/tree/main/%EB%A1%A4%EC%BC%80%EC%9D%B4%ED%81%AC%20%EC%9E%90%EB%A5%B4%EA%B8%B0 [프로그래머스] https://school.programmers.co.kr/learn/courses/30/lessons/132265 지금 푸는 문제들을 보면 이제 시간복잡도를 생각해야하는 문제들이 나오기 시작함을 느낀다. 이번 문제도 그렇고 저번 주에 풀었던 문제들도 그렇고... 보통 가장 먼저 생각나는 방법들은 시간복잡도를 오버하게 된다. 제일 많은 경우가 2중 반복문이지 않나 싶다. 이번 문제의 경우에도 1000000개의 배열을 2중 반복문으로 돌기만 하면 풀리는 쉬운 문제이지만..

<프로그래머스> 뒤에 있는 큰 수 찾기(Lv.2)

[깃허브] https://github.com/heesoo-park/ForCodeKata/tree/main/%EB%92%A4%EC%97%90%20%EC%9E%88%EB%8A%94%20%ED%81%B0%20%EC%88%98%20%EC%B0%BE%EA%B8%B0 [프로그래머스] https://school.programmers.co.kr/learn/courses/30/lessons/154539 이제는 진짜 하루 하루 문제 푸는 시간이 길어지고 있다. 그만큼 내가 느끼는 난이도가 올라가고 그걸 쉽게 내릴 수 있는 방법들이 존재한다는 거겠지... 오늘 이 문제도 힌트 하나를 잡으니까 앞에 들인 시간이 무색하게 쉽게 해결할 수 있었다. 처음에 이 문제를 보고 가장 쉽게 떠올릴 수 있는 것은 '반복문을 두 번 돌린다...

반응형