728x90
https://www.acmicpc.net/problem/9610
9610번: 사분면
2차원 좌표 상의 여러 점의 좌표 (x,y)가 주어졌을 때, 각 사분면과 축에 점이 몇 개 있는지 구하는 프로그램을 작성하시오.
www.acmicpc.net
📌 풀이
1. 첫째 줄에 점의 개수 n개를 입력한다.
2. 다음 n개 줄에 점의 좌표가 주어진다.
3. 4분면에 맞게 점의 좌표를 계산하고 사분면과 축에 점이 몇 개 있는지 예시 출력처럼 출력한다.
=> int(input())으로 개수를 입력받고 사분면과 축을 키로, 0을 값으로 주는 딕셔너리 val를 생성한다.
이후 점의 개수만큼 for문 돌리고 x, y를 한 줄에 입력 받는다.
사분면에 맞게 조건문을 돌리면서 해당되는 분면의 키에 1씩 추가한다.
마지막에 키, 값으로 딕셔너리 val의 아이템을 구한다. 출력 양식은 아래와 같이 주면 된다.
💡 oh point
원래는 딕셔너리 없이 풀어서 마지막에 사분면과 축을 다 출력할 때 무려 5줄을 썼다. (이런 걸 하드 코딩이라고 한다며)
때마침 키:값으로 나오는데 딕셔너리를 써보자 하고 써봤는데 매우 쉽고 편하구나!
머리가 좋으면 손가락이 덜 고생한다! 더 줄일 수 있는 방법을 찾아봐야겠다.
(방금 보니 조건문의 경우에도 if x> 0 주고 if y>0 이면 Q1에, else면 Q2에 주는 방법이 있었다! 그렇게도 생각할 수 있군...)
✅ 코드
dot = int(input())
val = {'Q1': 0, 'Q2': 0, 'Q3': 0, 'Q4': 0, 'AXIS': 0}
for i in range(dot) :
x, y = map(int, input().split())
if x > 0 and y > 0 :
val['Q1'] += 1
elif x < 0 and y > 0 :
val['Q2'] += 1
elif x < 0 and y < 0 :
val['Q3'] += 1
elif x > 0 and y < 0 :
val['Q4'] += 1
else :
val['AXIS'] += 1
for k, v in val.items() :
print("{}: {}".format(k, v))
728x90
'🥧 Python > ⚙️ 코딩테스트' 카테고리의 다른 글
[백준-Python] 10162번: 전자레인지 (0) | 2023.03.01 |
---|---|
[백준-Python] 8958번: OX퀴즈 (0) | 2023.03.01 |
[백준-Python] 5717번: 상근이의 친구들 (0) | 2023.02.24 |
[백준-Python] 5086번: 배수와 약수 (0) | 2023.02.24 |
[백준-Python] 10988번: 팰린드롬인지 확인하기 (0) | 2023.02.23 |