1부터 14까지가 저장된 2차원 리스트 A를 생성한다. 그리고 k와 n의 값이 작기에 먼저 값을 채우고 출력하는 방식으로 했다.k와 n 모두 1부터 14까지 반복되며 k번째 열에 (k-1)번째 열에서 0부터 n까지 더한 값을 append()를 사용해 추가해 나간다.반복문이 종료되면 테스트 케이스의 수를 입력받고 입력받은 값에 저장된 값을 출력한다.문제풀이A = [[i for i in range(1,15)]] for k in range(1,15): A.append([]) for n in range(1,15): A[k].append(sum(A[k-1][0:n])) for T in range(int(input())): k,n = int(input()),int(input()) print(A[k][n-1])
H = 3, W = 2라고 가정했을때 방 배정은 101,201,301,102,202,302로 진행된다.이 규칙을 통해 층수 Y는 손님의 수 N[2]를 최대 층수 N[0]로 나누었을때의 나머지임을 확인할 수 있다.만약 N[2]가 N[0]의 배수일 때는 0이 나오기 때문에 그때는 Y를 N[0]으로 설정한다.번호 X는 N[2]를 N[0]로 나눈 값을 ceil()로 올림 하여 구할 수 있다. X가 1의 자리수일 때는 zfill()을 사용해 0을 채운다.문제풀이from math import ceil for T in range(int(input())): N = list(map(int,input().split())) if N[2] % N[0]: Y = str(N[2] % N[0]) else: Y = str(N[0])..
[도착하기 직전의 이동거리는 반드시 1광년] 이 조건을 보지 못해 잠시 헤맸다.이 조건대로 규칙을 살펴보면 아래와 같은 규칙이 나온다. 순서 최대로 이동하는 수열 최대 이동 횟수 최대 거리 1 1 1 1 2 121 3 4 3 12321 5 9 4 1234321 7 16 5 123454321 9 25 N 123...(N-1)N(N-1)...321 N * 2 - 1 N^2 먼저 거리 I를 구하기 위해 목표 위치 E에서 현재 위치 S를 뺀다. 이후 N을 찾기 위해 sqrt()를 사용해 I의 제곱근을 구해 N에 저장한다.마지막으로 N에 2를 곱한 값을 ceil()을 사용해 올림 하고 1을 빼면 이동 횟수가 나온다.문제풀이from math import sqrt,ceil for T in range(int(input..
collections.Counter를 사용해 입력받은 문자열에서 각각의 숫자의 개수를 산출한다.6은 9를 뒤집어서, 9는 6을 뒤집어서 사용할 수 있기에 9의 개수를 6의 개수에 더하고 2로 나눈 다음 9를 지운다.그 다음 max()를 사용해 N의 value에서 가장 큰 값을 출력하면 된다. 6과 9의 개수가 가장 클 때는 실수형으로 출력되기 때문에 ceil()을 사용해 올림 해서 출력한다.문제풀이from collections import Counter from math import ceil N = Counter(list(map(int,input()))) N[6] += N[9] N[6] /= 2 del N[9] print(ceil(max(N.values())))
숏코딩을 위해 입력받은 문자열을 리스트 컴프리헨션을 사용해 하나씩 계산하고 sum()으로 더해 출력했다.문자를 ord()를 사용해 아스키코드로 변환하고 3으로 나눠서 더할때 최솟값이 3이 되도록 56을 뺀다.7번의 PQRS와 9번의 WXYZ는 4개이기 때문에 그 이상의 아스키코드 값이 나오면 1씩 빼서 계산한다.문제풀이print(sum((ord(i) - 56 - int(ord(i)>82) - int(ord(i)>89)) // 3 for i in input()))
입력받은 리스트의 길이 citations부터 0까지 반복문을 실행한다.citations의 요소 number와 h를 비교해 number가 h 이상일 때 count를 1 증가시킨다. 만약 count가 h 이상이면 h를 반환한다. 반복문이 모두 종료되어도 반환되는 값이 없으면 0을 반환한다.문제풀이def solution(citations): for h in range(len(citations), 0, -1): count = 0 for number in citations: if number >= h: count += 1 if count >= h: return h return 0
시간 초과 때문에 input() 대신 sys.stdin.readline()을 사용해 입력받는다.만약 입력받은 숫자가 1개면 범위만 0으로 출력하고 나머지는 입력받은 그대로 출력한다.평균을 출력할 때는 int형으로 변환하는 것이 아닌 round()를 사용해 반올림해서 출력한다.중앙값은 정렬된 리스트에서 [길이 // 2]에 위치한 값을 출력한다.최빈값은 collections.counter를 사용해 산출했다. 최빈값이 여러 개 있으면 두 번째 값을 출력한다.범위는 max()와 min()을 사용해 가장 큰 값에서 가장 작은 값을 뺀다.문제풀이from collections import Counter import sys; s = sys.stdin.readline lst = list() for i in range(i..