2024. 8. 24. 16:22ㆍPS (Program Solving)/BOJ (백준)
문제 설명
https://www.acmicpc.net/problem/30402
접근 방법 - 문자형 입력값에 대한 기본 문제
백준의 30402번 문제는 문자형으로 주어지는 입력값에 따라 정답을 달리하여 해결하면 되는 문제이다.
해당 문제는, 입력값으로 주어지는 문자 사진에 대해 이 그림이 춘배, 나비, 영철 중 어떤 것을 표현하는 것인지를 구하여 출력해야 하는 문제이다.
이때, 아래의 기준으로 3가지 중 하나를 구별하면 된다.
- 문자로 이루어진 사진에 'w'가 있다면, 이 사진은 춘배이다.
- 문자로 이루어진 사진에 'b'가 있다면, 이 사진은 나비다.
- 문자로 이루어진 사진에 'g'가 있다면, 이 사진은 영철이다.
이때, 'w' / 'b' / 'g' 중 하나만 사진에 표현된다고 명시되어 있다.
따라서, 입력값들을 살피면서 셋 중 하나가 발견된다면 그에 따라 춘배 / 나비 / 영철을 저장하여 출력하면 되는 것이다.
필자는 위 방식으로 코드를 작성하였는데, 혹여나 해당 문제를 해결하는 데에 어려움을 겪고 있다면 아래의 설명과 코드를 참고해 보길 바란다.
필자는 아래의 순서대로 코드를 작성하여 문제를 해결하였다.
코드의 실행 순서
1) 입력을 받기 이전, 정답을 저장할 임의의 변수 result를 미리 선언해 둔다.
2) 사진의 크기는 15x15이기 때문에, 2중 반복문을 통해 15*15만큼 반복하여 아래의 연산을 취한다.
- 한 픽셀에 대한 문자(pixel)를 입력받는다.
- pixel이 어떤 값인지 확인한다.
'r' / 'o' / 'y' / 'p'는 배경으로 취급해야 하기 때문에, 이 입력값들에 대해서는 무시하도록 한다.
다만 'w' / 'b' / 'g'는 각각 춘배 / 나비 / 영철의 사진일 때에만 있는 것이기 때문에, 해당 값이 나타나면 result에 올바른 정답을 저장하도록 한다.
('w'인 경우엔 " chunbae ", 'b'인 경우엔 " nabi ", 'g'인 경우엔 " yeongcheol "로 저장한다.)
3) 위 연산이 모두 완료되었다면, 최종적으로 저장된 result 값을 출력한 뒤 실행 종료한다.
성공한 코드
#define _CRT_SECURE_NO_WARNINGS
#pragma warning(disable: 4996)
#include <iostream>
#include <string>
#define endl '\n'
using namespace std;
//백준 30402번 코드
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL); cout.tie(NULL);
string result;
for (int i = 0; i < 15; i++) {
for (int j = 0; j < 15; j++) {
char pixel;
cin >> pixel;
switch (pixel) {
case 'w':
result = "chunbae";
break;
case 'b':
result = "nabi";
break;
case 'g':
result = "yeongcheol";
break;
}
}
}
cout << result << endl;
}
제출 결과
(2024.07.12 백준 30402번 문제 제출 결과)
'PS (Program Solving) > BOJ (백준)' 카테고리의 다른 글
[백준 BOJ] 26530번 Shipping (C++/cpp) (0) | 2024.11.16 |
---|---|
[백준 BOJ] 10178번 할로윈의 사탕 (C++/cpp) (0) | 2024.10.03 |
[백준 BOJ] 17176번 암호해독기 (C++/cpp) (0) | 2024.08.10 |
[백준 BOJ] 18096번 Арифметическая магия (C++/cpp) (0) | 2024.06.02 |
[백준 BOJ] 27324번 ゾロ目 (Same Numbers) (C++/cpp) (0) | 2024.05.28 |