Programming(106)
-
20210111 // 삼성 SW Expert 아카데미 문제 // 2072
삼성 SW Expert 아카데미 3503번 "홀수만 더하기" 문제입니다. TC = int(input()) for tc in range(1, TC+1): oddsum = 0 lst = list(map(int, input().split())) for ele in lst: if ele&1 == 1: oddsum += ele print("#%s"%tc, oddsum) 10개의 수를 입력받아서 그 중 홀수만 더학는 쉬운 문제다. 홀수를 판별하는 방법은 2로 나누었을 때 나머지가 1인 방법을 사용하는 것이 일반적이다. 하지만 나는 비트 연산자를 활용하여 1과 타겟 넘버를 and 비트 연산자를 사용했다. 이진수 비트 연산에서 0&1 = 0, 1&1 = 1 임을 활용하였는데 이는 논리 연산과도 비슷한 성질을 띤다. 어..
2021.01.11 -
20200818 // 삼성 SW Expert 아카데미 문제 // 3503
삼성 SW Expert 아카데미 3503번 "초보자를 위한 점프대 배치하기" 문제입니다. TC = int(input()) ans = [] for tc in range(1, TC + 1): k = "#"+str(tc) + " " N = int(input()) lst = list(map(int, input().strip().split())) lst.sort(reverse=True) mx = max(lst[0]-lst[1], lst[0]-lst[2]) for i in range(1, N-2): mx = max(mx, lst[i] - lst[i+2]) mx = max(mx, lst[len(lst)-2] - lst[len(lst)-1]) k += str(mx) ans.append(k) for e in ans: p..
2020.08.18 -
20200817 // 삼성 SW Expert 아카데미 문제 // 10580
삼성 SW Expert 아카데미 10580번 "전봇대" 문제입니다. TC = int(input()) ans = [] for tc in range(1, TC + 1): k = "#"+str(tc) + " " N = int(input()) count = 0 lst = [] for i in range(N): a, b = map(int, input().split()) for e in lst: if (a - e[0]) * (b - e[1]) < 0: count += 1 lst.append((a,b)) k += str(count) ans.append(k) for e in ans: print(e) 전선을 연결하는 양 쪽 위치를 입력 받고 이미 연결되어있는 전선들의 양 쪽 위치와 비교를 한다. 세 선이 한 점에서 만나..
2020.08.17 -
20200813 // 삼성 SW Expert 아카데미 문제 // 1238
삼성 SW Expert 아카데미 1238번 "Contact" 문제입니다. TC = 10 ans = [] for tc in range(1, TC + 1): k = "#"+str(tc) + " " addr = {} N, s = map(int, input().split()) addr[s] = [] lst = list(map(int, input().split())) visited = [] for i in range(0, N, 2): if lst[i] not in addr: addr[lst[i]] = [] if lst[i+1] not in addr[lst[i]]: addr[lst[i]].append(lst[i+1]) visited.append(s) temp = [] temp.extend(addr[s]) l = [..
2020.08.13 -
20200811 // 삼성 SW Expert 아카데미 문제 // 1493
삼성 SW Expert 아카데미 1493번 "수의 새로운 연산" 문제입니다. from cmath import * TC = int(input()) ans = [] for tc in range(1, TC + 1): k = "#"+str(tc) + " " p, q = map(int, input().split()) x1, y1, x2, y2 = 0, 0, 0, 0 for i in range(1,10000): y = 3-2*i l = pow((2*i-3)*(2*i-3) - 4 * (i**2 - i + 2 - 2 * p),0.5) y += l y /= 2 if y.is_integer(): x1 = i y1 = int(y) break for i in range(1,10000): y = 3-2*i l = pow((2*..
2020.08.11 -
20200810 // 삼성 SW Expert 아카데미 문제 // 6019
삼성 SW Expert 아카데미 6019번 "기차 사이의 파리" 문제입니다. TC = int(input()) ans = [] for tc in range(1, TC + 1): k = "#"+str(tc) + " " D, A, B, F = map(int, input().split()) k += str(float(D*F/(A+B))) ans.append(k) for e in ans: print(e) 유명한 폰 노이만의 파리 문제다. 폰 노이만의 파리 문제는 두 기차의 속력이 같았지만 이번 문제는 두 기차의 속력이 다르다. 문제에서 구하라고 한 것은 파리가 움직인 거리다. 거리 = 속력 * 시간 이고 파리의 속력은 주어졌으니 문제는 시간이다. 파리가 죽기 전까지 이동하는데에 걸린 시간은 얼마일까? 간단하다. ..
2020.08.10