-
백준 10871 X보다 작은 수 파이썬IT/알고리즘 2022. 2. 18. 01:54728x90
문제
정수 N개로 이루어진 수열 A와 정수 X가 주어진다. 이때, A에서 X보다 작은 수를 모두 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 N과 X가 주어진다. (1 ≤ N, X ≤ 10,000)
둘째 줄에 수열 A를 이루는 정수 N개가 주어진다. 주어지는 정수는 모두 1보다 크거나 같고, 10,000보다 작거나 같은 정수이다.
출력
X보다 작은 수를 입력받은 순서대로 공백으로 구분해 출력한다. X보다 작은 수는 적어도 하나 존재한다.
예제 입력 1 복사
10 5 1 10 4 9 2 3 8 5 7 6
예제 출력 1 복사
1 4 2 3
풀이
할 말이 많은데 후.. 문제를 제대로 이해하는데 1시간 걸린듯, 다른 블로그보니 나만 그런거같아서 더 화남 ㅋㅋㅋ
import sys N,X = map(int,sys.stdin.readline().split()) A = list(map(int,sys.stdin.readline().split())) for i in range(N) : if A[i] < X: print(A[i], end=" ")
일단,
첫째 줄에 N과 X가 주어진다. (1 ≤ N, X ≤ 10,000)
N,X = map(int,sys.stdin.readline().split())
오케이, N과 X 주어줬어!
둘째 줄에 수열 A를 이루는 정수 N개가 주어진다.
- 여기서 문제발생
- 수열 A를 이루는 정수 N개 라는 말에 수열 A니까 리스트인거 같고, 정수 N개니까 A= [N]으로 쓰면 되겠구나!
→알고보니, 수열 A에 정수 N개 (ex, 정수 10개면 10개의 정수를 일일이 넣으라는 거임 3개면 3개를 알아서)
→ 그런줄 모르고 계속 입력할 때 값을 하나만 넣으니 에러가 발생 (N= 3, A = 1, 100, 30 이렇게 무작위의 실제 정수 값을 3개 넣으라는 말..)
- 다른 블로그 열심히 봐도 왜 저렇게 썼는지 이해 못함
A = list(map(int,sys.stdin.readline().split()))
- 왜 이해못했냐면,
→ 아 그래 list라고 쓰면 [] 리스트 형태가 되는구나 오케이
→ 근데 왜 위에 N,X 처럼 split 해서 나눠야 되냐? ㅡㅡ (값을 N개 넣어야 하니까 그랬던거야)
! 그러다 번뜩! 값을 예제처럼 넣고 나서 이해함
근데 예제도 거지같아서 헷갈린게,
예제 입력 1 복사
10 5 1 10 4 9 2 3 8 5 7 6
N = 10 으로 잡았으면 A = 10개의 값을 넣으라고만 보여주면 되지, 왜 1부터 10까지 10개를 넣어서 저 10개가 바로 튀어나온다고 생각하게 하냐는 말이야 (나는 몰랐지 일일이 넣는걸, A에도 10 하나만 적어도 10개가 나오는 줄 알았어.
그래서 심지어는 아 10을 넣고 내가 random 함수 같은걸 써서 1부터 10까지를 랜덤하게 촤라락 나오게 해야되는구나 어케하지?? 를 고민하고 구글링하다가 시간 다감 ㅋ)
아오 그래서 결국에는 이해하는데 또 잠깐 당황했지
for i in range(N) :
아 이거 왜 범위 N개까지하지? 나 기존에는 range(1,N+1) 로 했는데 이거로 하면 왜 에러나?
→ 아 이건 카운트하는거잖아.. 0부터 세야지 !
그래서 결국 해결했다는 남들은 쉽다고 하는 알고리즘 2시간 (이 글 작성까지) 쓴 이야기였음ㅎ
'IT > 알고리즘' 카테고리의 다른 글
백준 10951 A+B - 4 파이썬 (0) 2022.02.18 백준 10952 A+B -5 파이썬 (0) 2022.02.18 백준 2438 별 찍기 -1 파이썬 (0) 2022.02.17 백준 11021 A+B -7 (0) 2022.02.16 백준 2742 기찍 N 파이썬 (0) 2022.02.16