티스토리 뷰

# 10818 최소, 최대


정수 N개가 주어질 때, 최솟값과 최댓값을 구하는 프로그램을 작성하시오. 

 

입력


첫째 줄에 정수의 개수 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 N개의 정수를 공백으로 구분해서 주어진다. 모든 정수는 -1,000,000보다 크거나 같고, 1,000,000보다 작거나 같은 정수이다.

 

 

입출력 예제


입력 출력
5
20 10 35 30 7
7 35

 

 

풀이


case = int(input())
data = input().split(' ')
data = list(map(int,data))

print(min(data),max(data))

 

시험 문제도 다 이렇게 나오면 좋겠다.

# 2562 최댓값


9개의 서로 다른 자연수가 주어질 때,

이들 중 최댓값을 찾고 그 최댓값이 몇 번째 수인지를 구하는 프로그램을 작성하시오.

 

입력


첫 째 줄부터 아홉 번째 줄까지 한 줄에 하나의 자연수가 주어진다. 주어지는 자연수는 100 보다 작다.

 

 

입출력 예제


입력 출력
3
29
38
12
57
74
40
85
61

85

8

 

 

풀이


lst = []
for i in range(9):
    data = int(input())
    lst.append(data)
n = max(lst)

print(n)
print(lst.index(n)+1)

 

처음에는 max 함수를 사용해서 풀었다가 조금 더 빠른 처리속도로 풀고 싶어서 고민을 더 해봤다.

그 풀이가 아래 풀이. for문이 돌면서 더 큰 값이 input으로 들어오면 값을 대체하도록 했고, 

대체된 i 값에 +1 을 해서 몇 번째 수에서 바뀌었는지 값을 같이 할당되도록 했다. 

 

n = 0
ind = 0
for i in range(9):
    a = int(input())
    if n < a:
        n = a
        ind = i+1
print(n)
print(ind)

# 2920 음계


다장조는 c d e f g a b C, 총 8개 음으로 이루어져있다.

이 문제에서 8개 음은 다음과 같이 숫자로 바꾸어 표현한다. c는 1로, d는 2로, ..., C를 8로 바꾼다.

1부터 8까지 차례대로 연주한다면 ascending, 8부터 1까지 차례대로 연주한다면 descending, 둘 다 아니라면 mixed 이다.

연주한 순서가 주어졌을 때, 이것이 ascending인지, descending인지, 아니면 mixed인지 판별하는 프로그램을 작성하시오.

 

입력


첫째 줄에 8개 숫자가 주어진다. 이 숫자는 문제 설명에서 설명한 음이며, 1부터 8까지 숫자가 한 번씩 등장한다.

 

 

입출력 예제


입력 출력
1 2 3 4 5 6 7 8

ascending

8 7 6 5 4 3 2 1

descending

1 2 6 8 3 7 5 4

mixed

 

 

풀이


input_data = list(map(int,input().split(' ')))

if sorted(input_data) == input_data:
    print('ascending')
elif sorted(input_data, reverse = True) == input_data:
    print('descending')
else:
    print('mixed') 
아무리봐도 비효율적인 코드. 최악.... 

위에 문제에 빨갛게 하이라이트 친 부분을 가만 살펴보고 아래 더보기를 눌러보자.

 

더보기

 

melody = input()
if melody == '1 2 3 4 5 6 7 8':
    print('ascending')
elif melody == '8 7 6 5 4 3 2 1':
    print('descending')
else:
    print('mixed')

 

 

나머지는 다음 글에 이어서 ...

 

@ 문제 출처 : https://www.acmicpc.net/step/6

댓글
링크
최근에 올라온 글
Total
Today
Yesterday