[파이썬][백준 9610번] 사분면
1. 문제Permalink
[Bronze III] 사분면 - 9610Permalink
성능 요약Permalink
메모리: 30840 KB, 시간: 64 ms
분류Permalink
구현(implementation), 수학(math)
문제 설명Permalink
2차원 좌표 상의 여러 점의 좌표 (x,y)가 주어졌을 때, 각 사분면과 축에 점이 몇 개 있는지 구하는 프로그램을 작성하시오.
입력Permalink
첫째 줄에 점의 개수 n (1 ≤ n ≤ 1000)이 주어진다. 다음 n개 줄에는 점의 좌표 (xi, yi)가 주어진다. (-106 ≤ xi, yi ≤ 106)
출력Permalink
각 사분면과 축에 점이 몇 개 있는지를 예제 출력과 같은 형식으로 출력한다.
출처: 백준, https://https://www.acmicpc.net/
2. 해결방법 시간복잡도Permalink
- 단순 코딩 O(N)
3. 문제 해결 및 코드Permalink
import sys | |
N = int(sys.stdin.readline()) | |
axis = 0 | |
grap = {'Q1': 0, | |
'Q2': 0, | |
'Q3': 0, | |
'Q4': 0} | |
for i in range(N): | |
x, y = map(int, sys.stdin.readline().split()) | |
if x == 0 or y == 0: | |
axis += 1 | |
if x > 0 and y > 0: | |
grap['Q1'] += 1 | |
elif x > 0 and y < 0: | |
grap['Q4'] += 1 | |
elif x < 0 and y < 0: | |
grap['Q3'] += 1 | |
elif x < 0 and y > 0: | |
grap['Q2'] += 1 | |
print(f"Q1: {grap['Q1']}") | |
print(f"Q2: {grap['Q2']}") | |
print(f"Q3: {grap['Q3']}") | |
print(f"Q4: {grap['Q4']}") | |
print(f"AXIS: {axis}") |
-
주석을 참고하면서 이해를 돕습니다.Permalink
4. 알고리즘 및 해설Permalink
- 딕셔너리 형태로 각각의 분면마다 값을 미리 지정해준다.
- 이후 반복문을 통해 두 값을 입력받고 4분면의 특징에 따라 값을 딕셔너리에 더해준다.
- 이때 축에 존재하는 값도 따로 더해준다.
- 최종적으로 각각의 분면에 입력된 값들을 출력해준 뒤 축에 존재하는 값도 출력해준다.