본문 바로가기

C++ 코딩 문제 풀이151

[Baekjoon] 5086번: 배수와 약수 https://www.acmicpc.net/problem/5086 5086번: 배수와 약수 각 테스트 케이스마다 첫 번째 숫자가 두 번째 숫자의 약수라면 factor를, 배수라면 multiple을, 둘 다 아니라면 neither를 출력한다. www.acmicpc.net 문제 해결 과정 착안 두 수를 서로 나눈 나머지가 0인지 확인한다. 구현 [스포 주의] 아래 '더보기'를 누르면 코드가 나오니 주의하세요~ 더보기 #include #include using namespace std; int main() { vector A, B; unsigned short a = 1, b = 1; while (a != 0 || b != 0) { cin >> a >> b; A.push_back(a); B.push_back(b.. 2023. 5. 6.
[Baekjoon] 1193번: 분수찾기 https://www.acmicpc.net/problem/1193 1193번: 분수찾기 첫째 줄에 X(1 ≤ X ≤ 10,000,000)가 주어진다. www.acmicpc.net 직전의 포스트와 마찬가지로, 이번 문제도 규칙성을 찾으면 쉽게 해결 가능한 문제이다. 본인은 처음 이 문제를 풀 때 너무 단순하게 생각해서 실제로 지그재그로 움직여서 구하는 코드를 짰었는데, 실행 시간이 생각보다 길게 나와서 다른 사람의 코드를 분석해보다가 깨달음을 얻고 눈물을 흘려버리고 말았다. 문제 해결 과정 착안 실제로 지그재그로 움직여서 구한다(분자 또는 분모가 1이 될 때 방향을 전환하는 원리). 아래와 같이 분수들을 그룹화 하고, 각 그룹의 규칙성을 찾아 해결한다(아래 그림 참고). 그림과 같이 분수들을 묶으면, \(.. 2023. 5. 6.
[Baekjoon] 2292번: 벌집 https://www.acmicpc.net/problem/2292 2292번: 벌집 위의 그림과 같이 육각형으로 이루어진 벌집이 있다. 그림에서 보는 바와 같이 중앙의 방 1부터 시작해서 이웃하는 방에 돌아가면서 1씩 증가하는 번호를 주소로 매길 수 있다. 숫자 N이 주어졌 www.acmicpc.net 이번 문제를 보고서는 규칙을 금방 찾아낸 사람에게는 아주 쉬운 문제이지만 규칙을 잘 발견하지 못한 사람에게는 엄청나게 어려운 문제가 될 수도 있을 것 같다는 생각이 들었다(물론 전혀 아닐 수도 있다 ㅎㅎ 반박 시에는 항상 제가 죄송합니다). 문제 해결 과정 착안 아래의 그림과 같이 구획을 나누어 규칙성에 따라 문제를 해결한다. 벌집의 중앙 1에서 \(N\)번 방까지 최소 개수의 방을 지나서 갈 때 지나는 .. 2023. 5. 6.
[Baekjoon] 11005번: 진법 변환2 https://www.acmicpc.net/problem/11005 11005번: 진법 변환 2 10진법 수 N이 주어진다. 이 수를 B진법으로 바꿔 출력하는 프로그램을 작성하시오. 10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를 www.acmicpc.net 문제 해결 과정 착안 앞의 포스트에서와 마찬가지로, ASCII Code와 실질적으로 가리키는 수 사이의 변환에 주의하며 실제 진법을 변환하는 과정과 동일하게 프로그래밍 한다. 구현 앞의 포스트와는 진법을 반대로 변환하는 문제인데, 사람에 따라 차이는 있을 수 있겠지만 개인적으로는 이번 문제가 아주 약간은 더 생각하기 까다로울 수는 있다고 생각한다. 그러나 앞의 포스트와 마찬가지로 실제 사람이.. 2023. 5. 6.
[Baekjoon] 2745번: 진법 변환 https://www.acmicpc.net/problem/2745 2745번: 진법 변환 B진법 수 N이 주어진다. 이 수를 10진법으로 바꿔 출력하는 프로그램을 작성하시오. 10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를 www.acmicpc.net 문제 해결 과정 착안 숫자 0~9에서 문자 A~Z로 넘어갈 때의 ASCII Code가 연속적이지 않다는 것만 알고 있다면, 실제로 사람이 진법을 변환하는 과정과 동일하게 간단하게 코딩하여 풀 수 있다. 구현 본인은 사실 특정한 문자를 ASCII Code로 나타내면 몇인지 전혀 모른다(구글링의 폐해? 단순 암기하는 걸 정말 세상에서 제일 싫어함). 다만, 숫자 9에서 문자 A로 넘어갈 때 ASCII .. 2023. 5. 6.
[Baekjoon] 2563번: 색종이 https://www.acmicpc.net/problem/2563 2563번: 색종이 첫째 줄에 색종이의 수가 주어진다. 이어 둘째 줄부터 한 줄에 하나씩 색종이를 붙인 위치가 주어진다. 색종이를 붙인 위치는 두 개의 자연수로 주어지는데 첫 번째 자연수는 색종이의 왼쪽 변 www.acmicpc.net 문제 해결 과정 착안 문제에서 주어진 핵심 조건: 도화지(2차원 좌표 평면)에 색종이를 붙이는 위치가 항상 자연수로 주어진다. 항상 정사각형 모양의 색종이를 도화지의 변과 평행하게 붙인다. 입력으로 주어지는 위치는 정사각형의 좌하단 좌표이다. 문제에서 직접적으로 언급된 것은 아니지만 쉽게 유추할 수 있는 것으로, 100 x 100 크기의 도화지를 두 좌표축과 평행하며 1의 간격으로 등분(10,000 등분)해.. 2023. 5. 6.