목록STUDY (96)
STUDY_SEONMIN

T = int(input()) for _ in range(T): x, y = map(int,input().split()) d = y-x n = 0 while d > n**2: n += 1 if (n**2)-d < n: print(2*n-1) else: print(2*n-2) 이 문제는 이동해야하는 총 거리에 따라 이동횟수를 구하는 문제입니다. 문제에 따르면 거리에 따른 이동은 다음과 같이 이루어집니다. 저는 여기서 $d=n^2$이 되는 지점에 주목했습니다. ex: ( 1 ), (1 2 1), ( 1 2 3 2 1), ( 1 2 3 4 3 2 1 ) 1. $ (n-1)^2 \lt d \le n^2 $ 을 만족하는 $n$을 찾습니다. 2. 위의 예시에서 알 수 있듯이 n을 찾게되면 이동횟수는 $2n-2$ 또..
상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그램 봉지와 5킬로그램 봉지가 있다. 상근이는 귀찮기 때문에, 최대한 적은 봉지를 들고 가려고 한다. 예를 들어, 18킬로그램 설탕을 배달해야 할 때, 3킬로그램 봉지 6개를 가져가도 되지만, 5킬로그램 3개와 3킬로그램 1개를 배달하면, 더 적은 개수의 봉지를 배달할 수 있다. 상근이가 설탕을 정확하게 N킬로그램 배달해야 할 때, 봉지 몇 개를 가져가면 되는지 그 수를 구하는 프로그램을 작성하시오. 정확하게 N킬로그램을 만들 수 없다면 -1을 출력하세요. N = int(input()) kg_3 = 0 while True: k..
이 아파트에 거주하려면 조건이 있습니다. "a층의 b호에 거주하려면 (a-1)층의 1호부터 b호까지의 사람들 수의 합만큼 사람들을 데려와 살아야 한다" 아파트에 비어있는 집은 없고 모든 거주민들이 계약 조건을 지키고 있다고 가정했을 때 k층 n호에는 몇 명이 살고 있는지 출력하세요. 단, 아파트는 0층부터 있고 각층에는 1호부터 있으며 0층 i호에는 i명이 산다. T = int(input()) for _ in range(T): k = int(input()) b = int(input()) floor_nums = [i+1 for i in range(b)] for i in range(1,k+1): floor_nums = [sum(floor_nums[:j+1]) for j in range(b)] print(fl..
이 호텔은 먼저 온 순서대로 손님들이 방을 배정받습니다. 각층 1호실부터 시작해서 1호실이 다 차면 2호실, 2호실이 다 차면 3호실 순으로 배정을 받습니다. ex) 2층, 각 층 3개 호실일 때 순서 101-> 201 -> 102 -> 202 -> 103 -> 203 호텔의 층수 H, 층별 객실 수 W, 손님의 입장 번호 N(몇 번째 손님인가를 의미) 가 주어졌을 때 해당 손님이 사용하게 되는 방의 번호를 출력하세요. T = int(input()) for _ in range(T): H, W, N = map(int, input().split()) floor = H if N % H == 0 else N % H rnum = N // H if N % H == 0 else N // H + 1 print('{}'..
누군가가 "p-value라는 개념에 대해 알고 있습니까?"라고 물었을 때 어떻게 답해야할지 고민을 해봤습니다. 학문적인 개념에 기반해서 "p-value란 귀무가설이 참이라고 가정했을 때 실험을 통해 얻어진 관찰값 또는 그 보다 더 희귀한 값이 나올 확률입니다."라고 답을 해야 하나?? "그럼 그 확률은 어떤 의미를 갖습니까?"라고 묻는다면 "그 확률값이 유의수준보다 큰지 작은지에 따라 귀무가설의 기각 여부가 결정됩니다. 유의수준보다 확률값이 작다면 귀무가설을 기각하고 그렇지 않다면 귀무가설을 기각하지 않습니다" 라고 답을 해야 하나?? 이런 대답은 정말 순수하게 학문적인 관점에서 하는 답변이라는 생각이 들었습니다. 블로그들을 돌아보다 이런 질문을 만났습니다. "당신이 맡은 프로젝트를 고객에게 설명해야 하..
땅 위에 달팽이가 있다. 이 달팽이는 높이가 V미터인 나무 막대를 올라갈 것이다. 달팽이는 낮에 A미터 올라갈 수 있다. 하지만, 밤에 잠을 자는 동안 B미터 미끄러진다. 또, 정상에 올라간 후에는 미끄러지지 않는다. 달팽이가 나무 막대를 모두 올라가려면, 며칠이 걸리는지 구하는 프로그램을 작성하시오. A, B, V = map(int,input().split()) d = (V-A)//(A-B) if (V-A)%(A-B) == 0: print(d + 1) else: print(d + 2) 달팽이가 하루에 이동하는 거리는 낮에 +A 밤에 -B 만큼해서 총 A-B 입니다. 단, 마지막 날에는 A만큼 올라가서 목표 지점에 도착하면 B만큼 내려오는 것은 계산을 하지 않아야 합니다. 이 점을 고려해 막대의 높이가 ..
무한히 큰 배열에 다음과 같이 분수들이 적혀있다. 1/1 1/2 1/3 1/4 1/5 … 2/1 2/2 2/3 2/4 … … 3/1 3/2 3/3 … … … 4/1 4/2 … … … … 5/1 … … … … … … … … … … … 이와 같이 나열된 분수들을 1/1 -> 1/2 -> 2/1 -> 3/1 -> 2/2 -> … 과 같은 지그재그 순서로 차례대로 1번, 2번, 3번, 4번, 5번, … 분수라고 하자. X가 주어졌을 때, X번째 분수를 구하는 프로그램을 작성하시오. X = int(input()) n = 1 while X > (n*(n+1)/2): n += 1 d = int(n*(n+1)/2) - X if n % 2 == 0: print('{}/{}'.format(n-d,1+d)) else: pr..

위의 그림과 같이 육각형으로 이루어진 벌집이 있다. 그림에서 보는 바와 같이 중앙의 방 1부터 시작해서 이웃하는 방에 돌아가면서 1씩 증가하는 번호를 주소로 매길 수 있다. 숫자 N이 주어졌을 때, 벌집의 중앙 1에서 N번 방까지 최소 개수의 방을 지나서 갈 때 몇 개의 방을 지나가는지(시작과 끝을 포함하여)를 계산하는 프로그램을 작성하시오. 예를 들면, 13까지는 3개, 58까지는 5개를 지난다. N = int(input()) n = 1 while N > (3*n**2-3*n+1): n += 1 print(n) 중앙의 방부터 시작해서 n개의 방을 지나서 도착할 수 있는 방 중 가장 큰 방의 값은 $3n^2 - 3n + 1$입니다. 따라서 임의의 방 번호 N이 주어졌을 때 몇 개의 방을 지나야 하는 가는..
고정비 A, 변동비 B, 상품판매단가 C가 주어졌을 때 최초로 이익이 발생하는 판매량(손익분기점)을 출력하세요. 만약 손익분기점이 존재하지 않으면 -1을 출력합니다. A, B, C = map(int,input().split()) if B >= C: print(-1) else: print(int(A/(C-B))+1) 우선 손익분기점이 존재하지 않는다는 것은 변동비가 판매단가보다 크거나 같아 손해가 발생하는 경우를 의미합니다. 따라서 B >= C 인 경우에는 -1을 출력하도록 하였습니다. 그 외의 경우에는 손익분기점이 반드시 존재하게 되는데, A+B*n < C*n 을 만족하는 가장 작은 정수 n을 구하는 문제로 볼 수 있습니다. A/(C-B) 가 나누어 떨어진다면 그 몫은 정확히 손익이 0이 되는 지점을 의..
그룹 단어란 단어에 존재하는 모든 문자에 대해서 각 문자가 연속해서 나타는 경우를 말합니다. 예를 들면 ccazzzzbb는 c, a, z, b 각 문자가 모두 연속해서만 나타나므로 그룹 단어입니다. 하지만 aabbbccb는 b가 떨어져서 나타나므로 그룹 단어가 아닙니다. 첫째 줄에 단어의 개수를 입력받고, 입력 받은 단어들 중에서 그룹 단어가 몇 개인지를 출력하는 프로그램을 작성하세요. N = int(input()) ans = [] for _ in range(N): S = input() is_group = True for s in S: if S.count(s) > 1: idx1, idx2 = S.index(s), len(S) - S[::-1].index(s) if S[idx1:idx2] != s*(idx..