본문 바로가기

프로그래머스lv263

[프로그래머스 lv2] 기능개발 풀이 ✅ 프로그래머스의 모든 문제와 해설 보기[클릭] 해설 문제의 조건을 요약하면, 1. 각 기능들은 완성도가 100%가 되었을 떄 배포된다. 2. 배포는 주어진 순서대로 이루어진다. 즉, 뒤의 기능이 먼저 완성되었다 할지라도 앞에 있는 기능이 배포되지 않았다면 먼저 배포될 수 없다. 가장 먼저, 각 기능에 대하여 배포까지 며칠이 남았는지 구할 수 있다. progresses[i]가 현재까지 진행된 완성도, speeds[i]가 하루에 채워지는 완성도이므로 (100-progress[i])를 speeds[i]로 나눈 몫의 올림값이 배포까지 필요한 일수가 된다. n을 k로 나눈 결과를 올림한 값은 (n+k-1)/k로 구한다. (외워두면 가끔 유용하게 쓸 수 있다!) 따라서, 각 기능에 대하여 배포까지 남은 날은 (1.. 2022. 8. 9.
[프로그래머스 lv2] 124나라의 숫자 풀이 ✅ 프로그래머스의 모든 문제와 해설 보기[클릭] 해설 모든 숫자를 (1, 2, 4) 3가지 수로 나타낸다고 했으므로 3진법과 관련있음을 유추할 수 있다. 10진법을 3진법으로 나타내기 위해서는 3으로 계속 나누어가며 나머지가 무엇인지 살펴야 한다. 나머지가 1일 떄는 1, 나머지가 2일 때는 2, 나머지가 0일 떄는 4를 문자열에 붙이고 맨 마지막에 이를 뒤집어 결과를 리턴한다. 단 주의할 것은, 3으로 나누어떨어질 경우(나머지가 0일 경우) 몫을 1 감소시키고 나머지를 3 증가시켜 3을 4로 변환시키자. 예를 들어, 10을 1, 2, 4 숫자로 변환할 때 10 / 3 = 몫 3 ... 나머지 1 => 1 3 / 3 = 몫 1 ... 나머지 0 => 몫에 1을 뺴주면 나머지는 3이 된다. 나머지 3을 4.. 2022. 8. 9.
[프로그래머스 lv2] 멀쩡한 사각형 ✅ 프로그래머스의 모든 문제와 해설 보기[클릭] 해설 문제를 처음 딱 보고, 아 뭔가 규칙을 찾는 문제구나 하는 생각이 든다. h*w의 직사각형에서 대각선이 지나가는 칸 수를 알 수 있다면 전체 블럭의 개수에서 해당 칸의 개수를 빼 정답을 구할 수 있다. 그렇다면 대각선이 지나가는 칸 수는 어떻게 알 수 있을까? 예제로 나온 8*12의 직사각형을 보면, 일정한 패턴이 반복되는 것을 알 수 있다. 8과 12의 최대공약수 4로 가로와 세로를 각각 나누어보면 2*3의 직사각형이 나온다. 이 직사각형은 전체 직사각형 안에 최대공약수(4개) 만큼 반복된다. 이 작은 직사각형을 보면, 대각선이 지나는 칸의 개수는 2+3-1 = 4개가 된다. 즉, W*H 의 전체 직사각형이 있고, W와 H의 최대공약수를 g라 할 때.. 2022. 8. 9.