youngseo's TECH blog

[PS | 한 번에 맞자!] 백준 22942 본문

알고리즘/세부구현

[PS | 한 번에 맞자!] 백준 22942

jeonyoungseo 2023. 7. 20. 10:05

0. 문제

데이터 체커

 

22942번: 데이터 체커

데이터가 조건에 맞는다면 YES, 조건에 만족하지 않는다면 NO를 출력한다.

www.acmicpc.net


1. 문제 생각

기하 골드 문제로, 처음부터 괄호 문제랑 연관해서 떠올리지는 못했다..🤦

힌트도 오히려 수학 문제처럼 줘서 더 헷갈릴 수 밖에 없었는데, 
역시 백준에서 수학 문제가 나오면 자료구조나 알고리즘적 접근을 더 의심해보는 게 좋은 방향인 것 같다.

이 문제는 괄호 문제와 비슷하게 해결할 수 있다.
( ( ) ) 괄호들이 색깔들로 주어진다고 응용해서 생각하면 되고, 주어지는 상황 속에서 같은 모양의 '('이 들어갔다면 같은 모양의 ')'가 들어가 '('를 상쇄시켜주면 된다는 점에서 stack이라는 구조를 사용한다는 걸 떠올릴 수 있다.


2. 문제 풀이

import sys
input=sys.stdin.readline

N=int(input())
List=[]
for i in range(N):
    x,y=map(int,input().split())
    List.append((x-y,i))
    List.append((x+y,i))
List=sorted(List)


stack=[]
for j in List:
    if stack: 
        if stack[-1]==j[1]:
            stack.pop()
        else:
            stack.append(j[1])
    else: stack.append(j[1])

if stack : print("NO")
else: print("YES")

3. 한 번에 풀었는가? X

아이디어 생각을 못해 한 번에 풀었지만 한 번에 풀었다고 볼 수 없다ㅠ