Programming(106)
-
20210115 // 삼성 SW Expert 아카데미 // 1979
삼성 SW Expert 아카데미 1979번 "어디에 단어가 들어갈 수 있을까" 문제입니다. TC = int(input()) def rotate_90(m): N = len(m) ret = [[0] * N for _ in range(N)] for r in range(N): for c in range(N): ret[c][N-1-r] = m[r][c] return ret for tc in range(1, TC+1): N, K = map(int, input().split()) lst = [list(map(int, input().split())) for _ in range(N)] rotlst = rotate_90(lst) plc = 0 for i in range(N): for j in range(N-K+1): if..
2021.01.15 -
20210114 // 삼성 SW Expert 아카데미 // 1983
삼성 SW Expert 아카데미 1983번 "조교의 성적 매기기" 문제입니다. TC = int(input()) for tc in range(1, TC+1): N, K = map(int, input().split()) lst = [] for i in range(N): mid, fin, work = map(int, input().split()) total = mid * 0.35 + fin * 0.45 + work * 0.2 lst.append(total) temp = lst[K-1] lst.sort() idx = lst.index(temp) if idx < N * 0.1: print("#%s"%tc, "D0") elif idx < N * 0.2: print("#%s"%tc, "C-") elif idx < N..
2021.01.14 -
20210114 // 삼성 SW Expert 아카데미 // 1984
삼성 SW Expert 아카데미 1984번 "중간 평균값 구하기" 문제입니다. TC = int(input()) for tc in range(1, TC+1): lst = list(map(int, input().split())) lst.sort() lst.pop(0) lst.pop() k = round(sum(lst)/len(lst)) print("#%s"%tc, k) 리스트를 입력받고 그 리스트의 최대 최소값을 제외한 값들의 평균값을 구하는 문제이다. 위 문제는 max, min 함수를 활용할 수도 있겠지만 나는 sort 메서드를 이용해서 정렬을 한다. 그 다음에 pop이라는 메서드를 사용하여 최대 최소 값을 제거한다. pop(index)는 index에 위치한 값을 리스트에서 제외하는 메서드인데 pop() ..
2021.01.14 -
20210114 // 삼성 SW Expert 아카데미 // 1986
삼성 SW Expert 아카데미 1986번 "지그재그 숫자" 문제입니다. TC = int(input()) for tc in range(1, TC+1): N = int(input()) k = 0 for i in range(1, N+1): if i&1 == 0: k -= i elif i&1 == 1: k += i print("#%s"%tc, k) for 반복문과 조건문을 활용하여 구할 수 있는 문제다. 홀수 짝수를 판별하는 방법은 이전 글들 중 하나에서 설명했었듯이 비트 연산자를 활용하거나 나머지 연산자를 활용할 수 있다. 위의 코드는 비트 연산자를 활용한 코드이다. TC = int(input()) for tc in range(1, TC+1): N = int(input()) k = 0 for i in ran..
2021.01.14 -
20210114 // BaekJoon Online Judge // 4344
백준 알고리즘 BaekJoon Online Judge 4344번 "평균은 넘겠지" 문제입니다. TC = int(input()) for tc in range(1, TC+1): lst = list(map(int, input().split())) N = lst.pop(0) avg = sum(lst)/N k = 0 for ele in lst: if avg < ele: k += 1 print("%.3f%%"%(k/N*100)) 인원수와 점수들을 입력받고 평균을 넘는 사람들의 비율을 구하는 문제이다. 백준 알고리즘 문제를 풀다보면 느낀 점은 파이썬으로 코딩을 하였을 때 문제의 난이도와 정답률이 괴리감이 있다는 점이다. 확실히 파이썬은 동적할당도 없고 해서 이러한 가변적인 크기의 리스트를 다룰 때 난이도가 쉽다고 느..
2021.01.14 -
20210114 // BaekJoon Online Judge // 10818
백준 알고리즘 BaekJoon Online Judge 10818번 "최소, 최대" 문제입니다. import sys N = int(sys.stdin.readline()) lst = list(map(int, sys.stdin.readline().split())) print(min(lst), max(lst)) 단순히 문제는 최대 최소 문제이다. 그런데 정답률이 43.889%로 생각보다 낮아서 이유가 궁금했다. 아마도 C/C++/Java 같은 경우는 배열의 길이가 가변이 아니라 길이를 입력받아서 그 길이만큼 할당을 해주어야 하기 때문에 난이도가 조금 있을 것이라고 생각한다. 하지만 파이썬은 그럴 걱정이 없어서 확실히 파이썬이 좀 더 편한 언어라고 생각했다.
2021.01.14