1. 문제
- 문제 링크: https://www.acmicpc.net/problem/14681
- 문제 요약: 좌표 평면 위의 한 점 (x, y)가 주어질 때 이 점이 어느 사분면에 속하는지 출력하는 문제입니다

2. 풀이
접근 방식
문제를 처음 읽었을 때, 주어진 좌표 (x, y)의 부호에 따라 결과가 결정된다는 것을 바로 파악할 수 있었습니다. 이 문제는 복잡한 알고리즘 없이 단순한 조건문을 사용하여 해결할 수 있습니다
- 1사분면: x와 y가 모두 양수 (x > 0 and y > 0)
- 2사분면: x는 음수, y는 양수 (x < 0 and y > 0)
- 3사분면: x와 y가 모두 음수 (x < 0 and y < 0)
- 4사분면: x는 양수, y는 음수 (x > 0 and y < 0)
이 네 가지 경우를 if-elif-else 구문을 사용하여 순서대로 확인하면 됩니다.
- 시간 복잡도: 입력받은 두 수의 부호를 한 번만 확인하면 되기 때문에 시간 복잡도는 O(1) 입니다.
- 공간 복잡도: x와 y, 두 개의 변수만 사용하기 때문에 공간 복잡도 또한 O(1) 입니다.
1. 입력 처리
# x 좌표, y 좌표를 입력받아 정수로 변환합니다
x = int(input())
y = int(input())
input() 함수를 사용하여 사용자로부터 한 줄씩 입력을 받습니다. 입력받은 값은 문자열이므로 int()를 통해 정수로 변환해줍니다.
2. 조건문으로 사분면 판별
#x, y의 부호를 확인하여 사분면 번호 출력
if x > 0 and y > 0:
print(1)
elif x < 0 and y > 0:
print(2)
elif x < 0 and y < 0:
print(3)
else:
print(4)
if와 elif를 사용하여 각 사분면의 조건을 and 연산자로 묶어 확인합니다. 마지막 4사분면의 경우는 앞의 세 조건에 해당하지 않는 유일한 경우이므로 else로 처리할 수 있습니다.
전체 코드
def solve():
try: #입력값 받기
x = int(input())
y = int(input())
#조건문을 통해 사분면을 판별
if x > 0 and y > 0:
print(1)
elif x < 0 and y > 0:
print(2)
elif x < 0 and y < 0:
print(3)
else:
print(4) #문제 조건에 따라 x와 y는 0이 아니기 때문에 남은 경우는 x > 0, y < 0 뿐
except ValueError:
print("정수 값을 입력해야 합니다.")
except Exception as e:
print(f"오류 발생: {e}")
solve()
3. 회고
- 어려웠던 점: 어려운 문제가 아닌데 코드를 작성하다가 쉽게 생각해서 사소한 오타가 많았습니다.
- 개선할 점: 이 문제의 풀이는 이미 최적(O(1))이므로 알고리즘적인 개선점은 없습니다. 대신 코드를 더 간결하게 작성하거나 변수명을 명확하게 하는 등 클린 코드 관점에서 코드를 다듬는 연습을 해볼 수 있겠습니다.
'개발 > 백준 알고리즘' 카테고리의 다른 글
| [백준] 2743: 단어 길이 재기 (Python) (0) | 2025.10.31 |
|---|---|
| [백준] 2480: 주사위 세개 (Python) (0) | 2025.10.20 |
| [백준] 2884: 알람 시계 (Python) (0) | 2025.10.11 |
| [백준] 2753번: 윤년 (0) | 2025.10.01 |
| [백준] 1330: 두 수 비교하기 (0) | 2025.09.28 |