아 이 문제 왜 안 풀리냐 정말 나는 빠가인건가!?

😰😰😰😰😰😰😰😰😰

< 백준 10871 >




일단 처음 짠 코드는 아래와 같다. 


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
n, x = input().split(' ')
N = int(n)
X = int(x)
A = []
for i in range(N):
    A.append(int(input()))
    for j in A : 
        if j >= X :
            A.remove(j)
        
print(A)

주피터 노트북에서 실행했을 때 제대로된 값을 출력하지만, 백준 사이트에서 제출하면 런타임 에러가 뜬다.


map( )과 filter( )를 써서 아래와 같은 다른 코드를 짰지만 또 다시 런타임 에러다. 역시 출력은 제대로 되는데 오답이다.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
n, x = input().split(' ')
N = int(n)
X = int(x)
A = []

for i in range(N):
    A.append(int(input()))
    
def test(j):
    if j < X :
        return j

result = list(map(test, A))
last_result = list(filter(None, result))
last_result

14번 행은 리스트 안에서 None 값인 항목을 제거해준 것이다.


왜 정답이 아닌 것이냐 정말 참내
젠장 -








낙심한 마음을 안고 그냥 구글에서 정답 코드를 찾았다.

다음은 '츄르 사려고 코딩하는 집사'님이 작성한 코드다.


1
2
3
4
5
6
N, X = map(int, input().split())
A = list(map(int, input().split()))

for i in range(N):
    if A[i] < X:
        print(A[i], end =" ")

내 코드와 비교했을 때 알 수 있는 점

1) 인풋 값 두 개를 받을 때 꼭


.split(' ') 

안 해줘도 되는구나

2) map( ) 함수로 세 줄 짜리 코드를 한 줄로 줄일 수 있구나.




< 백준 10817 > 

문제 : 세 정수 A, B, C가 주어진다. 이때 두 번째로 큰 정수를 출력하는 프로그램을 작성하시오.



처음 짠 코드는 다음과 같았다.



 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
A, B, C = map(int, input().split())
list = [A, B, C]

if A <= B <= C :
    print(B)
elif C <= B <= A :
    print(B)
elif B <= A <= C :
    print(A)
elif C <= A <= B :
    print(A)
elif A <= C <= B :
    print(C)
elif B <= C <= A :
    print(C) 

제대로 돌아가긴 하지만 간단한 문제 푸는데 너무 코드를 낭비한 것 같아서 짧은 코드로 다시 짰다.



1
2
3
4
A, B, C = map(int, input().split())
list = [A, B, C]
a = sorted(list)
print(a[1])

15줄 --> 4줄