Joonas' Note

Joonas' Note

[코딩으로 풀어보기] 95화 4번, 1~9까지 숫자로 식을 성립시켜라. 본문

알고리즘/문제 풀이

[코딩으로 풀어보기] 95화 4번, 1~9까지 숫자로 식을 성립시켜라.

2020. 6. 10. 01:55 joonas

    오랜만의 코딩으로 풀어보기 시리즈이다. 오늘은 아주 간단하고 쉬운 문제이다.

     

    문제

    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
    Comments