본문 바로가기
ALGORITHM/BAEKJOON

[BOJ/Python] 5556. 타일

by 안녕나는현서 2021. 10. 9.
728x90

📌 문제

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

 

5556번: 타일

상근이는 타일로 작품을 만드는 예술가이다. 크기가 N × N인 작품을 만들기 위해서 상근이는 1 × 1 타일을 사용한다. 색상은 빨강, 파랑, 노랑 중 하나이다. 작품은 가장 바깥쪽에 빨간색을 붙이

www.acmicpc.net

 

📌 문제 접근 방법

  1. 처음엔 타일의 인덱스를 받아서 타일이 바깥쪽에서 얼마나 안으로 들어와있는지를 num을 통해서 구했다.
    → 시간초과
  2. 시간초과가 나고 N의 범위를 보니, 타일의 인덱스를 받자마자 거기서 계산해서 바로 나와야 하는 것 같았다.
  3. 우선, 타일의 인덱스를 타일의 중심을 기준으로 왼쪽 위부분만 고려하도록 인덱스를 변형해줬다.
  4. 왼쪽 위 부분만 본다면, 한 행에 i개의 색깔을 쓸 수 있다.
  5. 따라서 j가 i보다 작다면 j의 인덱스를 3으로 나눈 것이 색깔의 번호가 된다.
  6. j가 i보다 크다면 i번째 행에 있는 마지막 색깔을 가지게 된다. i를 3으로 나눈 것이 색깔의 번호가 된다.

 

📌 코드

# 백준 5556 타일

N = int(input())
K = int(input())
tiles = [list(map(int, input().split())) for _ in range(K)]

for i, j in tiles:
    if i > (N+1)/2:
        i = N+1-i
    
    if j > (N+1)/2:
        j = N+1-j
    
    if i > j:
        answer = j%3
    else:
        answer = i%3
    
    if answer == 0:
        answer = 3
    
    print(answer)
728x90

'ALGORITHM > BAEKJOON' 카테고리의 다른 글

[BOJ/Python] 17471. 게리맨더링  (0) 2021.10.13
[BOJ/Python] 14503. 로봇 청소기  (0) 2021.10.13
[BOJ/Python] 2579. 계단 오르기  (0) 2021.10.08
[BOJ/Python] 1208. 부분수열의 합2  (0) 2021.10.08
[BOJ/Python] 2473. 세 용액  (0) 2021.10.07

댓글