Programming(106)
-
20210116 // 삼성 SW Expert 아카데미 // 10200
삼성 SW Expert 아카데미 10200번 "구독자 전생" 문제입니다. TC = int(input()) for tc in range(1, TC+1): N,A,B = map(int, input().split()) maxSub = min(A,B) minSub = max(A+B-N, 0) print("#%s"%tc, maxSub, minSub) P채널과 T채널 모두 구독하고 있는 사람의 수의 최댓값과 최솟값을 출력하는 문제다. 생각해보면 쉬운 문제라고 할 수 있다. 최대가 될 경우는 양쪽 구독자가 최대한 많이 겹치는 경우이므로 두 질문 중 답변이 적은 쪽이 최대이다. 최소가 되는 경우는 양쪽 구독자가 최대한 겹치지 않는 경우이다. 이 때는 양쪽 구독자의 합이 인원수가 넘어가지 않으면 상관 없지만 인원수가 넘..
2021.01.16 -
20210116 // BaekJoon Online Judge // 1157
백준 알고리즘 BaekJoon Online Judge 1157번 "단어 공부" 문제입니다. from collections import Counter def modefinder(nums): c = Counter(nums) order = c.most_common() maximum = order[0][1] modes = [] for num in order: if num[1] == maximum: modes.append(num[0]) if len(modes) >= 2: return "?" else: return modes[0] S = input() print(modefinder(S.upper())) 알파벳 문자열을 입력받고 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하는 문제다. 앞..
2021.01.16 -
20210116 // BaekJoon Online Judge // 1152
백준 알고리즘 BaekJoon Online Judge 1152번 "단어의 개수" 문제입니다. S = input() state = False word = 0 for ele in S: if ele == " ": if state: state = False else: if state == False: word += 1 state = True print(word) 단어의 개수를 출력하는 문제다. 여기서 단어의 정의는 공백과 공백사이의 문자열을 뜻한다. 공백에 들어온 상태와 공백에 들어오지 않은 상태 둘로 나누어서 현재 문자가 공백이고 공백 상태가 아니라면 방금 막 문자열에서 나온 상태이므로 공백의 상태로 바꾸고 현재 문자가 공백이 아니고 공백 상태라면 방금 문자열로 들어온 상태이므로 문자열 갯수 +1을 해준다. ..
2021.01.16 -
20210116 // 삼성 SW Expert 아카데미 // 1940
삼성 SW Expert 아카데미 1940번 "가랏! RC카!" 문제입니다. TC = int(input()) for tc in range(1, TC+1): N = int(input()) dis, vel = 0, 0 for i in range(N): lst = list(map(int, input().split())) if lst[0] == 0: dis += vel else: if lst[0] == 1: vel += lst[1] dis += vel elif lst[0] == 2: vel -= lst[1] if vel < 0: vel = 0 dis += vel print("#%s"%tc, dis) 입력으로 주어진 N개의 커맨드를 모두 수행하였을 때 N초 동안 이동한 거리를 계산하는 프로그램을 작성하는 문제다. ..
2021.01.16 -
20210116 // 삼성 SW Expert 아카데미 // 1204
삼성 SW Expert 아카데미 1204번 "최빈수 구하기" 문제입니다. from collections import Counter def modefinder(nums): c = Counter(nums) order = c.most_common() maximum = order[0][1] modes = [] for num in order: if num[1] == maximum: modes.append(num[0]) return modes TC = int(input()) for tc in range(1, TC+1): N = int(input()) lst = list(map(int, input().split())) modes_lst = modefinder(lst) modes_lst.sort() modes_lst...
2021.01.16 -
20210115 // BaekJoon Online Judge // 10809
백준 알고리즘 BaekJoon Online Judge 10809번 "알파벳 찾기" 문제입니다. alplist = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'] lst = [-1] * 26 S = input() for i in range(len(S)): if lst[alplist.index(S[i])] < 0: lst[alplist.index(S[i])] = i for ele in lst: print(ele, end=" ") 문자열을 입력받고 문자열을 탐색하면서 탐색한 알파벳이 최초로 어느 인덱스에 나타나는지 저장해서 출력하는 문제이다. 입력받은 문자열을 탐색하면서..
2021.01.15