[231123] Today I Learned

YoungHyun Kim·2023년 11월 23일
1

TIL ✍️

목록 보기
4/68

[프로그래머스] 소수 만들기

주어진 배열에서 3개의 숫자를 뽑아 더한 다음, 소수가 되는 경우의 수를 구하는 문제였다. 이 문제를 풀면서 제일 많이 고민했던 점은 따로 없었던 것 같다. 그냥 말 그대로 경우의 수를 모두 구해서 소수인지 아닌지를 판별하면 되었던 문제. 무난무난하게 풀었다.

하지만, 이런 유형의 탐색문제를 풀다보면 시간초과로 종종 문제를 틀리는 경우가 있어서 탐색방법을 다양하게 알고있다면 컴파일 시간을 더욱 짧게할 수 있는 코딩을 하는게 가능하지 싶다. 내일 탐색 방법에 대해서 조금 더 알아봐야겠다.


[프로그래머스] 덧칠하기

길이가 m 미터인 롤러를 가지고, 군데군데 덧칠이 필요한 n 미터의 벽을 모두 덧칠할 수 있는 최소한의 횟수를 구하는 문제.

앞으로 내가 설명할 과정을 더 멋지게 말할 수 있는 방법이 있겠지만, 나는 모르기 때문에 내가 생각하는 대로 적어나가 보겠다.

이 문제를 풀어낼 때 제일 중요하게 생각했던 것은, 처음 페인트가 벗겨진 구역의 번호와 롤러의 길이를 더하고 1을 뺀 숫자보다 큰 구역에 땜빵(?)이 있을 때 롤러를 한 번 더 칠해야 한다는 것이다.
이 조건만 잘 생각하고 문제를 풀어내면 금방 풀어낼 수 있었던 문제였다.

이 문제도 무난하게 풀어낸 문제!


[프로그래머스] 기사단원의 무기

이 문제는 자력으로 풀어내지 못했다. 아무리 약수를 구하는 코드에서 살펴봐야하는 경우의 수를 줄여도 시간 초과로 문제를 틀려냈기 때문이다.

결국 힌트를 찾아봤는데...

약수의 갯수를 찾으려는 수의 제곱근(제곱근이 실수형태여도 괜찮다)보다 작은 수까지 약수를 찾으면, 해당 약수의 짝이 되는 약수가 있다.

Example ) 16의 약수 -> (1, 16) , (2, 8) , 4(제곱근)

고등학교 수학 시간에 조금 더 집중해서 공부를 했었다면 풀어낼 수 있는 문제였지 않았을까... 하며 문제를 풀어냈다. 아니 풀어냄당했다.
고민하는 시간이 너무 괴로워서 힌트를 찾아봤는데, 너무 허무해서 더 괴로웠던 문제였다.


[프로그래머스] 로또의 최고 순위와 최저 순위

내가 생각하는 이 문제에서의 포인트는

로또 번호를 하나를 맞추든, 아예 못맞추든 6등(낙첨)이다.

이 예외사항을 잘 처리하는 게 이 문제의 핵심이었던 것 같다. 나머지는 그닥 어렵지 않은 문제였다.
내가 가지고 있는 로또 번호 중 알아볼 수 없는 번호의 갯수를 먼저 찾아내고, 당첨번호와 나머지를 비교해서 맞은 갯수를 찾아내면 경우의 수를 찾아내는 건 어렵지 않으니까!

네 문제 풀고 하루 종일 뭐 했냐... 라고 생각할 수 있겠지만, 다른 문제를 어떻게 풀어야 하나 Apple Document를 하루 종일 들여다보고 있었다. 내일은 그렇게 고민하던 문제 꼭 풀어서 블로그에 올려야겠다.

profile
iOS 개발자가 되고 싶어요

0개의 댓글