반응형

Prob


Approach

랜던함 8 X 8 선택 중 최솟값이므로 전수조사한다.

문제에 힌트가 있다. 맨 왼쪽 위 칸이 흰색인 경우와 검은색인 경우만 존재한다.

각 8 X 8판에서 맨 왼쪽 위 칸을 흰색인 경우와 검은색인 경우로 가정하여

색칠할 경우의 최솟값을 구한다.

이 계산을 모든 8 X 8에 대해 계산한다.


Code

def cal_cnt(board):
    cnt_w = 0
    cnt_b = 0
    
    for i in range(8):
        for j in range(8):
            #if board[0][0] == w
            if ((i + j) % 2 == 1 and board[i][j] == "W"):
                cnt_w += 1
            elif ((i + j) % 2 == 0 and board[i][j] == "B"):
                cnt_w += 1
            #if board[0][0] == b
            if ((i + j) % 2 == 0 and board[i][j] == "W"):
                cnt_b += 1
            elif ((i + j) % 2 == 1 and board[i][j] == "B"):
                cnt_b += 1
    return min(cnt_w, cnt_b)

if __name__ == "__main__" :
    N, M = map(int, input().split())
    board = []
    for i in range(N):
        board.append([ch for ch in input()])
    aws = 8 * 8

    for i in range(N - 7):
        for j in range(M - 7):
            slice_board = [one_row[j:j+8] for one_row in board[i:i+8]]
            cnt = cal_cnt(slice_board)
            aws = min(cnt, aws)

    print(aws)

 

출처

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

반응형

'프로젝트 > Baekjoon' 카테고리의 다른 글

BAEKJOON PYTHON 2750 수 정렬하기  (0) 2021.08.30
BAEKJOON PYTHON 1436 영화감독 숌  (0) 2021.08.23
BAEKJOON PYTHON 2231 분해합  (0) 2021.08.23
BAEKJOON PYTHON 7568 덩치  (0) 2021.08.23
BAEKJOON PYTHON 2798 블랙잭  (0) 2021.08.21
블로그 이미지

Refrin

일상생활 끄적 IT 프로젝트 끄적

반응형

Prob


Approach

전수 조사는 시간이 너무 오래 걸린다.

범위를 제한하자.

N = num + num의 자리수의 합

num의 자리수의 합은 1 ~ 9 * (자리수) 의 범위를 가진다. (3자리 수로 예를 들면 100 = 1, 999 = 27)

따라서 검색 범위는 N - num의 자리수의 합 의 최소 최대 범위가 된다.


Code

if __name__ == "__main__" :
    N = int(input())
    m_digits = len(str(N))
    aws = 0
    min = N - 9 * m_digits
    if min < 0 : min = 1
    for i in range(min, N):
        if i == N - sum([int(j) for j in str(i)]):
            aws = i
            break

    if aws == 0:
        print(0)
    else :
        print(aws)

 

출처

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

반응형
블로그 이미지

Refrin

일상생활 끄적 IT 프로젝트 끄적

반응형

Prob


Approach

부등호에 유념하여 작성한다.


Code

if __name__ == "__main__" :
    N = int(input())
    person = []
    ranking = ""

    for i in range(N) :
        person.append(list(map(int, input().split())))
    for j in range(len(person)) :
        m_rank = 1
        for k in range(len(person)) :
            if j == k : continue
            if person[j][0] < person[k][0] and person[j][1] < person[k][1] :
                m_rank += 1
        ranking = ranking + str(m_rank) + " "

    print(ranking[:-1])

 

출처

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

반응형
블로그 이미지

Refrin

일상생활 끄적 IT 프로젝트 끄적