본문 바로가기
Algorithm Problem Solving/BaekJoon

[BaekJoon] 백준 16433 주디와 당근농장 (Python / 파이썬)

by ʚ⇜❅🎕̈❄⇝ɞ 2021. 8. 25.
728x90
반응형

BaekJoon 백준 16433 주디와 당근농장 문제는 N × N 격자 모양의 밭에 이미 위치가 (R, C)인 칸에 당근을 하나 심었고 그 칸의 변을 공유하는 칸들에는 당근을 심을 수 없을 때, 최대한 많은 당근을 심은 밭의 모양을 구하는 문제이다. 난이도는 Bronze 1이다.

 

BaekJoon 16433 주디와 당근농장 문제 정보

출처

- https://www.acmicpc.net/problem/16433

알고리즘 분류

- 구현

난이도

- 브론즈 1 / Bronze 1

 

주디와 당근농장 문제 요약

  • 주디가 할 일은 N × N 격자 모양의 밭에 당근을 심는 일입니다. 각 칸에는 최대 하나의 당근을 심을 수 있는데 어떤 칸에 당근이 심겨 있으면 그 칸의 변을 공유하는 칸들에는 당근을 심을 수 없습니다. (2 ≤ N ≤ 99)
  • 주디는 이미 위치가 (R, C)인 칸에 당근을 하나 심었고 나머지 칸에도 당근을 심으려고 합니다. (1 ≤ R, C  N)
  • 주디는 심을 당근을 무한히 가지고 있다고 가정합니다.
  • 주디가 최대한 많은 당근을 심었을 때 밭이 어떤 모양일지 출력한다. 

 

문제 풀이 과정

  1. 당근을 최대한 많이 심으려면 격자 모양으로 심어야 한다.
  2. 이미 심은 당근의 행과 열이 둘 다 짝수 or 홀수라면, 나머지 당근들 또한 행과 열이 둘 다 짝수 or 홀수인 곳에 심는다.
  3. 이미 심은 당근의 행과 열이 짝 홀 or 홀짝이면, 나머지 당근들 또한 행과 열이 짝 홀 or 홀짝인 곳에 심는다.
  4. 당근을 모두 심고 밭의 모양을 출력한다.

 

코드 및 설명
N, R, C = map(int, input().split())
field = [['.'] * N for _ in range(N)]
field[R - 1][C - 1] = 'v'

for row in range(N):
    # 당근 위치의 행과 열이 둘 다 홀수 거나 둘 다 짝수라면
    if (R + C) % 2 == 0:
        # 행이 짝수이면 짝수 열에 당근 심기
        if row % 2 == 0:
            for column in range(0, N, 2):
                field[row][column] = 'v'
        # 행이 홀수이면 홀수 열에 당근 심기
        else:
            for column in range(1, N, 2):
                field[row][column] = 'v'
    else:
        # 행이 짝수이면 홀수 열에 당근 심기
        if row % 2 == 0:
            for column in range(1, N, 2):
                field[row][column] = 'v'
        # 행이 홀수이면 짝수 열에 당근 심기
        else:
            for column in range(0, N, 2):
                field[row][column] = 'v'

for f in field:
    print(''.join(f))

BaekJoon 백준 16433 주디와 당근농장 문제를 파이썬 python으로 풀어보았다. 난이도는 Bronze 브론즈 1이다. 

728x90
반응형

댓글