• TOC {:toc}

이 글은 백준 온라인 저지의 9610번 문제를 파이썬(Python)으로 풀이한 것을 모아놓은 글입니다.

일종의 연습 기록이며 제가 정답을 받은 코드와 참고할만한 다른 코드를 같이 기록합니다. 필요한 경우 코드에 대한 해설을 기록합니다만 코드는 통과했어도 해설은 틀릴 수 있기 때문에 가볍게 참고해주시길 부탁드립니다. 피드백은 편하신 방법으로 자유롭게 주시면 감사하겠습니다.

2021.03.26

메모리 시간 코드 길이
28776 KB 116 ms 368 B
n = int(input())
p = [0, 0, 0, 0, 0]

for _ in range(n):
    x, y = map(int, input().split())
    if x > 0 and y > 0:
        p[1] += 1
    elif x < 0 and y > 0:
        p[2] += 1
    elif x < 0 and y < 0:
        p[3] += 1
    elif x > 0 and y < 0:
        p[4] += 1
    else:
        p[0] += 1

for i in range(1, 5):
    print(f"Q{i}: {p[i]}")
print(f"AXIS: {q[0]}")

아이디어 & 풀이

순서대로 축, 1, 2, 3, 4 사분면 위의 점의 개수로 이루어진 리스트를 만들어 0으로 초기화 한다.

  • 각 사분면의 숫자와 인덱스를 일치시키기 위해서 축을 0번에 위치시킨다.

입력된 점이 각 영역 안에 놓였을 때 그 영역(축 또는 사분면)에 해당하는 원소의 값을 1 증가시킨다.

참고 답안

import sys

I = sys.stdin.readline
a = [0] * 5

for i in range(int(I())):
    x, y = map(int, I().split())
    if x == 0 or y == 0:
        a[-1] += 1
        continue
    c = 0
    # 인덱스값을 이동
    # x > 0, y > 0이면 c == 0 (1사분면)
    # x < 0, y > 0이면 c == 1 (2사분면)
    if x < 0:
        c += 1
    # x > 0, y < 0이면 c == 2 (4사분면)
    # x < 0, y < 0이면 c == 3 (3사분면)
    if y < 0:
        c += 2
    a[c] += 1
for i in range(4):
    print("Q%d: %d" % (-~i, a[[0, 1, 3, 2][i]]))
print("AXIS:", a[4])

아이디어 & 풀이

특정 원소에 접근해서 1만큼 증가시키는 것은 동일하게 수행하되 그 전에 각 조건에 따라 ‘인덱스의 값’을 변경시켰다.