본문 바로가기

Python3

[백준/BOJ] 16960 스위치와 램프 (파이썬 Python) https://www.acmicpc.net/problem/16960 우선 입력 받은 모든 램프 번호에 대한 갯수를 저장해 둔다.  그리고 스위치를 하나씩 없애보면서 해당 스위치에 대한 램프 또한 갯수에서 1을 뺀다.  이때 램프 번호 중 0이 한번이라도 존재하지 않는다면, 스위치 하나를 없애도 램프를 다 켤 수 있다는 뜻이므로  스위치 하나를 없앴을 때 램프의 갯수 중 0이 있는지를 확인해 이후 결과를 0 또는 1로 지정한다.  import sysinput = sys.stdin.readline# input 단계n, m = map(int, input().split())lamp = dict(zip(list(range(1, m+1)), [0 for _ in range(1, m+1)]))switch = [lis.. 2024. 11. 20.
[백준/BOJ] 27919 UDPC 파티 (파이썬 Python) https://www.acmicpc.net/problem/27919 막연히 U, D, P 갯수만 세면 되겠다 싶었는데 생각해보니 U와 C의 문자 갯수를 더한 값이  P와 D를 더한 갯수의 절반보다 많으면 무조건 U는 최대 득표로 선정되는 걸 발견할 수 있었다.  D나 P의 최대 득표 경우는 더 쉬운데, 문자열중에 D나 P가 있으면 무조건 최대 득표로 선정될 수 있다. 왜냐하면 모든 U를 C로 간주하면 D나 P가 있기만 해도 최대 득표의 경우가 되기 때문이다.  따라서 코드 솔루션은 아래와 같다. words = input()uc_cnt = words.count('U')+words.count('C')dp_cnt = words.count('D')+words.count('P')if uc_cnt > (dp_cnt.. 2024. 11. 19.
[백준/BOJ] 14929 귀찮아 (파이썬 Python) https://www.acmicpc.net/problem/14929 직관적인 수학 능력을 요구하는 문제이다. 각 요소별 중복되지 않은 두 개의 값을 곱한 뒤 다 더하는 것인데, 어렵진 않지만 단순히 조합으로 풀면 시간초과가 난다.  결국 (AB + BC + AC) 형태의 값을 구하면 되므로 수학적 개념을 살짝 응용해 풀어낼 수 있다. $$ (a+b)^2 = a^2 + 2ab + b^2 $$ 를 응용하면, ((a+b)^2 - (a^2+b^2)) / 2 = ab 가 되므로​  (합의 제곱 - 제곱의 합) / 2 로 결과를 도출할 수 있다.  import sysinput = sys.stdin.readlinedef main(): N = int(input()) arr = list(map(int, input().. 2024. 11. 15.