[백준/약점체크] 2504번: 괄호의 값
2022. 9. 18. 16:58
컴퓨터/코딩테스트
[문제] [내 코드] - 위 문제를 풀기 위해서는 먼저 괄호의 쌍이 올바르게 맞춰져 있는지 판단할 수 있어야 한다. 그 부분 코드 구현을 먼저 연습했다. - 이 문제를 해결하기 위해서는 stack을 활용해야 한다 - list로 구현한 stack에 여는 괄호를 append하고 닫는 괄호가 나오면 후입선출한다 (stack.pop(-1)) - 만약 추출할 괄호가 없거나(stack == []), 추출한 괄호가 맞지(bd == match[d]) 않으면 쌍이 잘못 맞춰져 있다고 판단한다 data = list(map(str, input())) match = {')':'(', ']':'['} stack = [] result = 1 for d in data: if d in match.values(): stack.appe..
[백준/약점체크] 14888번: 연산자 끼워넣기
2022. 9. 16. 16:12
컴퓨터/코딩테스트
이 문제 재밌었다.. [문제] [내 코드] from itertools import permutations import operator cnt = int(input()) - 1 arr = list(map(str, input().split())) ops_cnt = [] for i, j in zip(input().split(), ['+','-','*','/']): ops_cnt += [j]*int(i) cases = list(set(permutations(ops_cnt, cnt))) def my_div(arg1, arg2): if arg1 < 0: result = (abs(arg1) // arg2) * (-1) else: result = arg1//arg2 return result ops = { '+' : o..
[백준/튼튼한기본기] 2581번: 소수
2022. 9. 15. 16:39
컴퓨터/코딩테스트
[문제] [내 코드] M = int(input()) N = int(input()) dec = [] for i in range(M, N+1): for j in range(2, i+1): if i%j == 0: if i == j: dec.append(i) break if len(dec) < 1: print(-1) else: print(sum(dec)) print(min(dec)) 지난번 소수 구하기 문제처럼 나누어지는 게 자기자신 외의 숫자로 나누어지면 for 문을 break하는 식으로 했다 그리고 소수가 존재하지 않을 때는 문제에서 제시한 대로 -1를 출력했다
[백준/튼튼한기본기] 1292번: 쉽게 푸는 문제
2022. 9. 15. 16:28
컴퓨터/코딩테스트
아... 이 문제 때문에 꿈까지 꿨다. 너무나도 컨닝하고 싶었으나 개발새발로라도 스스로 코드를 짜봤다. 따라서 개발새발 주의. [문제] [내 코드] A, B = map(int, input().split()) def find_num(n): for i in range(n+1): thr = (i * (i+1))/2 n_diff = n - thr if n_diff
[백준/튼튼한기본기] 1978번: 소수 찾기
2022. 9. 13. 00:11
컴퓨터/코딩테스트
[문제] [내 코드] _ = input() temp = [int(i) for i in input().split()] print(len([t for t in temp if len([i for i in range(1, t+1) if t%i == 0])==2])) 약수의 개수가 두 개인 숫자의 갯수를 구하는 방식을 썼다 - 하지만 약수의 개수를 모두 구하는 대신에, 다른 수로 나누어지는 수를 먼저 탈락시키는 방법을 쓰면 조금 더 빠르지 않을까.. [개선안] _ = int(input()) temp = [int(i) for i in input().split()] cnt=0 for t in temp: for i in range(2, t+1): if t%i==0: if t == i: cnt += 1 break pri..
[백준/튼튼한기본기] 2693번: N번째 큰 수
2022. 9. 12. 23:51
컴퓨터/코딩테스트
[문제] [내 코드] for _ in range(int(input())): arr = [int(i) for i in input().split()] print(sorted(arr)[-3])
[백준/튼튼한기본기] 2609번: 최대공약수와 최대공배수
2022. 9. 12. 01:53
컴퓨터/코딩테스트
[문제] [내 코드] - 버전1: 주어진 숫자마다 약수 리스트를 만들었다 - 76ms 걸렸다 - 리스트 만드는 습관을 버리고자.. 다른 방법을 모색해봄 a, b = map(int, input().split()) a_list = [i for i in range(1, a+1) if a%i == 0] b_list = [j for j in range(1, b+1) if b%j == 0] r1 = max(list(set(a_list)&set(b_list))) print(r1) r2 = r1 * (a//r1) * (b//r1) print(r2) - 버전2: 주어진 숫자 중에서 작은 수를 기준으로 높은 수부터 약수를 구했다 (ex. 24면 24, 23, 22, 21, .. 로 for loop에서 나눔) - 살짝 줄어..
[백준/튼튼한기본기] 2309번: 일곱 난쟁이
2022. 9. 11. 22:49
컴퓨터/코딩테스트
[문제] [내 코드] - 버전1 (39184KB, 92ms) import random heights = [int(input()) for _ in range(9)] while True: sampled = random.sample(heights, 7) if sum(sampled)==100: for s in sorted(sampled): print(s) break - 버전2 (30840KB, 68ms) def foo(heights): diff = sum(heights) - 100 for i in range(len(heights)): first = heights[i] for j in heights[i+1:]: second = j if diff == (first+second): heights.remove(fir..