[C++] 분수 찾기 : 1193번
문제 무한히 큰 배열에 다음과 같이 분수들이 적혀있다. 이와 같이 나열된 분수들을 1/1 → 1/2 → 2/1 → 3/1 → 2/2 → … 과 같은 지그재그 순서로 차례대로 1번, 2번, 3번, 4번, 5번, … 분수라고 하자. X가 주어졌을 때, X번째 분수를 구하는 프로그램을 작성하시오. 문제 해석 지그재그로 진행되는 분수 배열에서 일정한 규칙을 찾아 X번째 분수가 무엇인지 출력하는 문제이다. 개인적인 해석은 이렇다. 분자와 분모를 따로 따로 구해서 접근해야 한다고 생각했고, 각 분자, 분모는 일정한 규칙을 가지고 있다고 생각했다. 또 문제에서 알 수 있는 건, 지그재그로 진행되는 방(층)은 1, 2, 3, 4, 5... 의 형태로 1씩 증가 중이며, 방(층)의 값은 각 방(층)의 분자/분모 중 최대..
2022. 7. 4.
[C++] 벌집 : 2292번
문제 위의 그림과 같이 육각형으로 이루어진 벌집이 있다. 그림에서 보는 바와 같이 중앙의 방 1부터 시작해서 이웃하는 방에 돌아가면서 1씩 증가하는 번호를 주소로 매길 수 있다. 숫자 N이 주어졌을 때, 벌집의 중앙 1에서 N번 방까지 최소 개수의 방을 지나서 갈 때 몇 개의 방을 지나가는지(시작과 끝을 포함하여)를 계산하는 프로그램을 작성하시오. 예를 들면, 13까지는 3개, 58까지는 5개를 지난다. 문제 해석 벌집은 1부터 시작하여 시계방향으로 회전하며 1개의 껍질(층)을 생성하며 무한대로 생성된다. 각 껍질(층)의 최대값은 1층부터 { 1, 7, 19, 37, 61 … } 의 값을 가진다. 각 층의 최대값은 { 6, 12, 18, 24 ... } 로 공차가 6인 등차수열을 이룬다. 또한, 각 층에..
2022. 7. 4.