[CodeUp 기초 100제] 6094번 풀이 with 파이썬(python)

Jeony·2021년 9월 17일
0

codeup 기초 100제

목록 보기
94/98
post-thumbnail

문제

리스트

정보 선생님은 오늘도 이상한 출석을 부른다.

영일이는 오늘도 다른 생각을 해보았다.
출석 번호를 다 부르지는 않은 것 같은데... 가장 빠른 번호가 뭐였지?

출석 번호를 n번 무작위로 불렀을 때, 가장 빠른 번호를 출력해 보자.

단,
첫 번째 번호와 마지막 번호가 몇 번인지는 아무도 모른다.
음수(-) 번호, 0번 번호도 있을 수 있다.

참고

리스트에 출석 번호를 기록해 두었다가, 그 중에서 가장 작은 값을 찾아내면 된다.
그런데, 가장 작은 값은 어떻게 어떤 것과 비교하고, 어떻게 찾아야 할까?

입력 예시

10
10 4 2 3 6 6 7 9 8 5

출력 예시

2

답안

모델 답안

n = int(input())
a = input().split()

for i in range(n) :
    a[i] = int(a[i])

min = a[0]
for i in range(0, n) :
    if a[i] < min :
        min = a[i]

print(min)

내 답안

n = int(input())
a = input().split()

for i in range(n):
    a[i] = int(a[i])

s = a[0]
for i in range(n):
    if a[i] < s:
        s = a[i]

print(s)

풀이

이번 문제는 쉽게 min()함수를 사용할 수 있지만 저는 min()함수를 사용하지 않았어요.
이번 문제를 풀기 전에 어떻게할 지 생각하다가,
입력된 첫번째 숫자와 두번째 숫자를 비교하고 더 작은 숫자를 그 다음 세번째 숫자와 비교하고 하는 방식으로 풀었어요!

🔍모델 답안 풀이

1. 번호를 총 몇 번 부를건지 입력 받기 위해 n 변수 선언.
2. 불러지는 번호의 입력을 띄엄띄엄 받기 위해 a 변수 선언.
a 변수에 위의 입력 예시처럼 여러개를 넣으면 a는 list가 된다.
a 변수 안에는 a = [10, 4, 2, 3, 6, 6, 7, 9, 8, 5] 이렇게 여러개의 데이터가 쌓여있다.

n = int(input())
a = input().split()

3.변수 a는 리스트형식이지만, 그 안에 있는 값 중 하나의 형태를 print(type(a[0])) 출력해보면 문자열(string)으로 나온다. 그것을 for문 반복문으로 정수(int)로 변환해서 다시 넣어준다.

for i in range(n) :
    a[i] = int(a[i])
  1. a의 값을 서로 비교해서 작은 것을 넣어줄 min 함수 선언.
    입력된 수를 처음부터 비교하기 위해서 min에는 맨처음 값 a[0]을 넣어 초기화 해준다.
  2. for문을 써서 0부터 n번까지 비교 조건문을 돌린다.
  3. 비교 조건문은 a 리스트의 값이 min 변수보다 작으면 min에 a 리스트의 값을 넣는다.

    입력된 수: 10 4 2 3 6 6 7 9 8 5
    10 vs 10 중 더 작은수 min에 넣기 (min=10)
    10 vs 4 중 더 작은수 min에 넣기 (min=4)
    min vs 2 중 더 작은수 min에 넣기 (min=2)
    min vs 3 중 더 작은수 min에 넣기 (min=2)
    min vs 6 중 더 작은수 min에 넣기 (min=2)
    ...

  4. for문을 빠져나와서 min 변수를 출력 해준다.
min = a[0]
for i in range(0, n) :
    if a[i] < min :
        min = a[i]
print(min)

input(): 프롬프트를 띄워서 사용자의 입력 받을 수 있게 해준다.
(단, 입력 받은 것은 문자열로 저장된다. print(type()))으로 type() 괄호 안에 변수를 넣고 찍으면 정수인지, 문자열인지, 무슨 타입인지 확일 할 수 있다!)

int(n): 위의 input()에서 말했듯이 input으로 받은 값은 문자열로 저장된다.
산술을 하기 위해, 문자열을 정수로 변환시켜주는 int()를 써서 변환시켜준다.

[ ] list: 변수 안에 여러가지의 값을 넣을 수 있다.
선언 예시)
a = []
b = ["a", "b", "c"]

출력 예시)
print(a[]) -> 빈공간
print(b[0]) -> a
print(b[1]) -> b
print(b) -> ["a", "b", "c"]

for문: 반복을 데이터가 남을 때까지 밑에 내용 계속 반복 실행!
for i in 데이터:
(들여쓰기칸) 실행문

ex)

for i in [1, 2 ,3]:
    print(i)
출력: 1
     2
     3

데이터에는 iterable이 들어갈 수 있다.

range(): 괄호 안에 들어가는 숫자만큼의 수열을 표현해준다.
range(3) -> 0, 1, 2 (0부터 3직전까지 표현)
range(1, 3) -> 1, 2 (1부터 시작해서 3직전까지 표현)
range(1, 3, +2) -> 1 (1부터 시작해서 2씩 늘려가서 3직전까지 표현. (1 + 2는 3이므로 3직전까지 표현))

print(): 괄호 안의 내용을 출력!

profile
알고리즘으로 문제를 해결하자 (ʘ言ʘ╬)

0개의 댓글