/images/logo.png

[백준]2845 파티가 끝나고 난 뒤

https://www.acmicpc.net/problem/2845 풀이: 상근이가 계산한 참가자의 수 -> L * P 와 각 기사에 적혀있는 참가자의 수의 차이를 출력한다 코드: 사용언어 : python 1 2 l,p=map(int,input().split()) for i in [*map(int,input().split())]: print(i-l*p,end=' ')

[백준]2550 전구

https://www.acmicpc.net/problem/2550 풀이: 전기줄 - 2 참고 코드: 사용언어 : python 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 import bisect d,q,c,e={},[],[],[] n=int(input()) for i in map(int,input().split()): d[i]=0 for k,i in enumerate(map(int,input().split())): d[i]=k for k,i in d.items(): s=bisect.bisect_left(q,i) if s!=len(q):q[s]=i else:q+=[i] c+=[s] s=len(q) print(s) for i in range(n-1,-1,-1): if c[i]==s-1:e+=[list(d)[i]];s-=1 print(' '.join(map(str,sorted(e))))

[백준]18353 병사 배치하기

https://www.acmicpc.net/problem/18353 풀이: 가장 긴 증가하는 부분 수열 5 참고 정확히 말하면 가장 긴 감소하는 부분 수열이지 않을까? 라는 생각이 드는 문제이다. 말 그대로 감소하는 것이기에 뒤에서부터 증가하는 수열을 찾을까? 라는 생각이 들었지만, 귀찮은 관계로 모든 수에 음수 처리를 해주어 가장 긴 증가하는 부분 수열을 찾게되었다. 코드: 사용언어 : python 1 2 3 4 5 6 7 8 import bisect n=int(input()) q=[] for i in map(int,input().split()): s=bisect.bisect_left(q,-i) if s!=len(q):q[s]=-i else:q+=[-i] print(n-len(q))

[백준]3745 오름세

https://www.acmicpc.net/problem/3745 풀이: 가장 긴 증가하는 부분 수열 5 참고 파이썬에서 EOF 처리하는 방법을 알게되었다. C++ 에서는 while문 내부에서 cin이나 scanf의 return 값으로 알 수 있었지만, 파이썬은 안되더라. 그냥 단순하게 try catch 문에서 EOF를 감지해서 EOF 일 때 exit() 하는 방법으로 하는 것 같다. 다른 의견으로는 그냥 무한루프를 돌리면 알아서 중지되면서 맞았습니다가 떴다고 하는데, 나는 안되서 잘 모르겠다. 코드: 사용언어 : python 1 2 3 4 5 6 7 8 9 10 import bisect try: while input(): q=[] for i in map(int,input().