[백준]2529.부등호

jeongjeong2·2023년 8월 22일
0

For coding test

목록 보기
54/59

문제 바로가기

문제 풀이

인근에 위치한 부등식만 만족하는 조건 하에 하나씩 찾을 것, 이 때 시간을 최소화하기 위해 max값과 min값의 순서 배열 시작을 다르게 함
max=9876543210
min=0123456789로 시작
op로 부등호를 받은 후 idx값을 이용해서 하나하나 비교, 식이 성립하지 않을 때마다 배열의 앞뒤 값을 바꿔주며 while문을 반복한다.
부등식이 모두 만족하면 반복문을 중지하고 값을 출력한다.

정답 코드

"""
https://www.acmicpc.net/problem/2529
"""
N=int(input())
op=input().split()
max=[9,8,7,6,5,4,3,2,1,0]
min=[0,1,2,3,4,5,6,7,8,9]
ans_max=max[:N+1]
ans_min=min[:N+1]

def check(arr):
    sat=1
    while sat!=0:  
        sat=0
        for idx in range(N):
            a=arr[idx]
            b=arr[idx+1]
            if op[idx]=='>':
                if a>b:
                    pass
                else:
                    arr[idx]=b
                    arr[idx+1]=a
                    sat+=1
            if op[idx]=='<':
                if a<b:
                    pass
                else:
                    arr[idx]=b
                    arr[idx+1]=a
                    sat+=1
    return arr

print(*check(ans_max),sep='')
print(*check(ans_min),sep='')

추가적인 개념

다른 사람들도 비슷한 아이디어에서 시작했으나 코드의 간단 명료함이 다른 것이 아쉽다. sat변수를 이용한 while문의 중지말고 다른 방법이 있을지 알아보기

0개의 댓글