Brute Force

가능한 모든 경우의 수를 넣고, 조건에 맞다면 출력!

문제 1. 비밀번호 (#1816)

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

import sys
input = sys.stdin.readline
def solution(k):
    for i in range(2,1000001):
        if k%i == 0:
            return "NO"
    return "YES"
n = int(input())
for _ in range(n):
    k = int(input())
    print(solution(k))

문제 2. 사탕 (#14568)

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

n = int(input())
cnt = 0
for a in range(2, n+1):
    for b in range(1, n+1):
        for c in range(1, n+1):
            if a % 2 == 0 and c >= b+2 and a+b+c == n:
                cnt += 1
print(cnt)

문제 3. 연립방정식 (#19532)

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

a, b, c, d, e, f = map(int, input().split())
for x in range(-999, 1000):
    for y in range(-999, 1000):
        if a*x+b*y == c and d*x+e*y == f:
            print(x, y)
            break

문제 4. 숫자 야구(#2503)

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

import sys
input = sys.stdin.readline
def check_num(c_number, number, s, b):
    strike, ball = 0, 0
    if c_number //100 == number//100:
        strike += 1
    elif str(number).find(str(c_number // 100)) != -1:
        ball += 1
    if (c_number%100)//10 == (number%100)//10:
        strike += 1
    elif str(number).find(str((c_number%100)//10)) != -1:
        ball += 1
    if c_number%10 == number%10:
        strike += 1
    elif str(number).find(str(c_number%10)) != -1:
        ball += 1
    if s == strike and b == ball:
        return 1
    else:
        return 0
ans = 0
n = int(input())
hint = [list(map(int, input().split())) for _ in range(n)]
for a in range(1, 10):
    for b in range(1, 10):
        for c in range(1, 10):
            if a==b or b==c or c==a:
                continue
            cnt = 0
            for arr in hint:
                num = arr[0]
                strike = arr[1]
                ball = arr[2]
                cnt += check_num(num, a*100+b*10+c, strike, ball)
                if cnt == n:
                    ans += 1
print(ans)

문제 5. 모이기 (# 1090)

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

import sys
input = sys.stdin.readline
n = int(input())
house = [list(map(int, input().split())) for _ in range(n)]
ans = [1 << 30]*(n+1)
for i in range(n):
    for j in range(n):
        mx, my = house[i][0], house[j][1]
        dist = []
        for h in range(n):
            dist.append(abs(mx - house[h][0]) + abs(my - house[h][1]))
        dist.sort()
        s = 0
        for d in range(n):
            s += dist[d]
            if ans[d+1] > s:
                ans[d+1] = s
print(*ans[1:])
"""
idx = 0
dist = [[] for _ in range(n)]
for x, y in house:
    for i in range(n):
        dist[idx].append(abs(x-house[i][0])+abs(y-house[i][1]))
    idx += 1
for d in dist:
    d.sort()
dist.sort()
print(dist)
for i in range(n):
    print(sum(dist[0][:i+1]), end=" ")
"""