11736. 평범한 숫자

기록하는 용도·2022년 5월 19일
0

일이주일 전에 풀다가 뭐때문인지 막혀서 넘어가버렸던 문제였다.
오늘 다시 풀어보니 처음 아이디어가 문제를 잘못 이해했고 밑에 댓글을 보고 다시 풀었다.

자신의 좌,우 숫자를 비교해야하기때문에 인덱스 1번부터 마지막인덱스 -1까지 돌게하고,
그렇게 범위를 3으로 제한해놓고 MAX값과 MIN값을 저장해둔다.
그리고 자신의 값이 MAX값도 아니고 MIN값도 아니면 cnt+=1 해준다.

tc = int(input())
for k in range(tc):
    num = int(input())
    num_lst = list(map(int, input().split()))

    cnt=0
    for i in range(1,num-1):
        max_num = max(num_lst[i-1:i+2])
        min_num = min(num_lst[i-1:i+2])
        if num_lst[i] != max_num and num_lst[i] != min_num:
            cnt+=1
    print("#{} {}".format(k+1,cnt))

다른 사람의 풀이

문제에서 따져줘야하는 자신이 평범한 숫자인지에 대한 여부를 그대로 조건식에 걸어 줄 수 있다.

    for i in range(1,num-1):
        if num_lst[i-1] < num_lst[i] < num_lst[i+1] or num_lst[i-1] > num_lst[i] > num_lst[i+1]:
            cnt+=1
    print("#{} {}".format(k+1,cnt))

0개의 댓글