※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※

 

이번에 볼 문제는 백준 13140번 문제인 Hello World!이다.
문제는 아래 링크를 확인하자.

https://www.acmicpc.net/problem/13140 

 

13140번: Hello World!

N이 주어질 때 hello + world = N을 만족하는 서로 다른 한 자리 자연수(0 포함) d, e, h, l, o, r, w를 구해서 아래 그림과 같은 형태로 출력하는 프로그램을 작성하여라. 단, h와 w는 0이 될 수 없다.

www.acmicpc.net

이 문제는 hello+world = N을 만족시키는 서로 다른 수를 찾는 복면산 문제이다.

문자가 7종류뿐이므로, 7중 반복문으로 각 문자에 들어갈 수 있는 숫자들을 하나씩 넣어보는 것으로 문제를 해결할 수 있다.

 

h와 w는 0일 수 없다는 점도 잊지 말고 구현하자.

 

아래는 제출한 소스코드이다.

#include <iostream>
using namespace std;

bool visited[10];

int main() {
	ios::sync_with_stdio(0);
	cin.tie(0);
	
	int N; cin >> N;
	for (int d = 0; d < 10; d++) {
		visited[d] = 1;
		for (int e = 0; e < 10; e++) {
			if (visited[e]) continue;
			visited[e] = 1;
			for (int h = 1; h < 10; h++) {
				if (visited[h]) continue;
				visited[h] = 1;
				for (int l = 0; l < 10; l++) {
					if (visited[l]) continue;
					visited[l] = 1;
					for (int o = 0; o < 10; o++) {
						if (visited[o]) continue;
						visited[o] = 1;
						for (int r = 0; r < 10; r++) {
							if (visited[r]) continue;
							visited[r] = 1;
							for (int w = 1; w < 10; w++) {
								if (visited[w]) continue;
								if (h * 10000 + e * 1000 + l * 120 + o * 1001 + w * 10000 + r * 100 + d == N) {
									cout << "  " << h << e << l << l << o << '\n';
									cout << "+ " << w << o << r << l << d << '\n';
									cout << "-------\n";
									if (N < 100000) cout << "  " << N;
									else cout << ' ' << N;
									return 0;
								}
							}
							visited[r] = 0;
						}
						visited[o] = 0;
					}
					visited[l] = 0;
				}
				visited[h] = 0;
			}
			visited[e] = 0;
		}
		visited[d] = 0;
	}

	cout << "No Answer";
}
728x90

'BOJ' 카테고리의 다른 글

[BOJ 3000 // C++] 직각 삼각형  (0) 2021.08.09
[BOJ 1256 // C++] 사전  (0) 2021.08.08
[BOJ 1939 // C++] 중량제한  (0) 2021.08.06
[BOJ 15918 // C++] 랭퍼든 수열쟁이야!!  (0) 2021.08.05
[BOJ 15916 // C++] 가희는 그래플러야!!  (0) 2021.08.04

+ Recent posts