본문 바로가기
Programming/알고리즘

[백준 / Python] 30457번 단체줄넘기

by castberry_ 2023. 12. 17.
반응형

문제

https://www.acmicpc.net/problem/30457

 

30457번: 단체줄넘기

$N$명의 학생들이 단체줄넘기를 하려고 한다. 단체줄넘기를 하기 위해서는 한 줄로 나란히 서야 하고, 학생들은 각자 줄을 잡은 양쪽 방향 중 한 곳을 바라보고 서야 한다. 학생들은 각자 바라보

www.acmicpc.net


코드

n = int(input())
data = list(map(int, input().split()))
data.sort()

data1 = []
data2 = []

i = 0
while True:
    if i == len(data):
        break
    data1.append(data[i])
    i += 1
    if i == len(data):
        break
    data2.append(data[i])
    i += 1

answer = 0

if len(data1) == 1:
    answer += 1
elif len(data1) > 1:
    answer += 1
    for i in range(1, len(data1)):
        if data1[i - 1] < data1[i]:
            answer += 1

if len(data2) == 1:
    answer += 1
elif len(data2) > 1:
    answer += 1
    for i in range(1, len(data2)):
        if data2[i - 1] < data2[i]:
            answer += 1



if (len(data1) > 1 and data1[-1] == data1[-2] and data1[-1] > data2[-1]) or (len(data2) > 1 and data2[-1] == data2[-2] and data2[-1] > data1[-1]):
    answer += 1

print(answer)

 

그리디 알고리즘 문제이다. 

키 순서로 정렬한 다음, 

키 작은 순서부터 앞, 뒤 나눠서 세우고, 카운트하면 된다. 

반응형

댓글