Post

Baekjoon1074 - Z (Python)

백준 사이트 1074 - Z 문제입니다.

이 글을 보시기 전에 문제를 풀기 위해 충분한 생각을 하셨나요? 답을 안 보고 푸는게 최대한 고민하는게 가장 중요하다고 생각합니다.!!

☑️ 1. 문제

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


☑️ 2. Input , Output


☑️ 3. 분류 및 난이도

solved.ac class 3 문제입니다.


☑️ 4. 생각한 것들

  • 재귀는 어렵습니다..
  • 이 문제는 브루트포스하게 풀면 당연하게도 시간초과가 납니다.
  • 일정 규칙을 발견해야하는데, 막상 발견하고나면 아무것도 아니지만 발견하기까지 생각하기가 어려웠습니다.
  • 전체 크기를 N * N이라고 했을때 1사분면에 있는것은 N//2 * N//2 안에 있으면 됩니다.
  • 2사분면에 있는것은 N//2 * (N//2 ~ N) 안에 있으면 됩니다.
  • 3사분면에 있는것은 (N//2 ~ N) * N//2 안에 있으면 됩니다.
  • 4사분면에 있는것은 (N//2 ~ N) * N//2 ~ N) 안에 있으면 됩니다.
  • 이를 반복하여 위치를 찾는 코드를 만듭니다.

5. code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
from sys import stdin


def solution():
    n, r, c = map(int, stdin.readline().split())
    size = 1
    for i in range(n):
        size *= 2
    result = x = y = 0
    while size != 0:
        size //= 2
        if r < x + size and c < y + size:
            result += 0
        elif r < x + size and c >= y + size:
            result += size * size * 1
            y += size
        elif r >= x + size and c < y + size:
            result += size * size * 2
            x += size
        else:
            result += size * size * 3
            x += size
            y += size

        if size == 1:
            print(result)


solution()



6. 후기

  • 어렵습니다. 저도 참고하면서 풀었는데, 막상 알고나니 별 거 아닙니다. 그래서 Sliver1난이도 같습니다.. 알면 풀고 모르면 못푸는..

c++로 작성이 필요하거나 도움이 필요하시면 댓글을 작성해주세요.!! 기록용이라 설명이 자세하지 않습니다.

This post is licensed under CC BY 4.0 by the author.