Joonas' Note
[코딩으로 풀어보기] 95화 4번, 1~9까지 숫자로 식을 성립시켜라. 본문
오랜만의 코딩으로 풀어보기 시리즈이다. 오늘은 아주 간단하고 쉬운 문제이다.
문제
1부터 9까지의 숫자를 한번씩만 사용해서, 수식을 성립시키는 문제이다.
이런 유형의 문제는 "복면산 문제"라고 불리는 수학 퍼즐의 한 종류이다.
여담이지만, 개인적으로 좋아하는 문제이다. 이와 관련한 알고리즘 문제를 출제한 적도 있다.
완전 탐색류 알고리즘을 연습하기 좋은 문제라고 생각한다. 아래 링크에서 풀어볼 수 있다.
BOJ 15811 - 복면산?! (https://www.acmicpc.net/problem/15811)
위 문제는 9개의 숫자와 9개의 알파벳이니 더 쉽다.
1부터 9까지 A부터 I까지 모두 대응시켜보며 만들어지는 세 값이 일치하는 지 확인하면 된다.
즉, 모든 순열을 확인하면 된다.
경우의 수는 \(9! = 362,880\)인데, 이걸 컴퓨터 없이 모두 확인해보기란 무척 어려운 일이다.
문제적 남자에서도 그랬지만, 수식 중 \(GH~\div~I\) 부분을 힌트로 삼아야한다.
나머지 두 수식은 곱셈와 뺄셈만 있으니, 항상 정수일 것이다. 그렇다면 \(GH~\div~I\)의 결과 역시 정수이여야하므로, \(GH\)를 \(I\)로 나누어 떨어지게 만드는 수를 생각해보면 후보를 추려진다.
근데 코드는 그런거 없어도 된다 ㅋㅋ (단, 부동소수점만 조심한다면)
코드는 작성하는 데 한 5분 걸린 것 같다.
코드
위 코드를 실행해보면 (늘 그렇듯이) 답이 하나만 나온다.
A = 3, B = 9, C = 1, D = 4, E = 5, F = 6, G = 7, H = 8, I = 2 이다.
'알고리즘 > 문제 풀이' 카테고리의 다른 글
UVa 136 - Ugly Numbers (2) | 2020.07.06 |
---|---|
BOJ 11012 - Egg (1) | 2020.06.10 |
BOJ 3640 - 제독 (0) | 2020.05.24 |
BOJ 15480 - LCA와 쿼리 (0) | 2020.05.15 |
BOJ 9034 - 순위 (0) | 2020.05.01 |