코드 text_num = int(input()) for _ in range(text_num): k = int(input()) # 층 변수 n = int(input()) # 호 변수 f0 = [i for i in range(1,n+1)] # 0층 1호부터 ~ n호까지 인원수 만들기 for i in range(k): for j in range(1, n): # fo[0] (1호)은 계속 1이며, 아래 층에 인원 수를 구하는 k층까지 더함. f0[j] += f0[j-1] print(f0[n-1]) 문제 풀이 f0 변수에 0층 1호부터 ~ n호까지의 인원수를 만들어준다. k층의 n호에 있는 인원수를 구하기 위해선 k번 만큼 반복해줘야한다. f0[0]은 1호이기에 계속 1이며, 이를 제외하고 f0[j] += fo[..
코드 n = int(input()) cnt = 0 while n >= 0 : if n % 5 == 0 : cnt += n//5 print(cnt) break n -= 3 cnt += 1 else : print(-1) 문제 풀이 봉지의 최소 개수를 구해야하는 문제이기 때문에 3과 5중 큰 수인 5로 나누어 떨어지게 만들면 최솟값을 구할 수 있다. 1. n이 5로 한 번에 나눠 떨어지는 수이다. 2. n이 5로 나누어지지 않아 -3을 해가면서 5로 나누어 떨어지는지 확인한다. 3. (2)의 방법이 되지 않는 3의 배수인 경우 -3을 통해서만 계산한다. 4. 나머지 경우는 문제에서 제시했듯이 -1을 출력한다. (3)번 같은 경우 출력하기 위해서 n>0 이 아닌 n>=0을 함으로써 0이 됐을 때 더해지는 값이 ..
코드 natural_num = set(range(1,10001)) generated_num = set() for i in range(1, 10001): for j in str(i): i += int(j) generated_num.add(i) self_num = sorted(natural_num - generated_num) for k in self_num : print(k) 이 문제에서는 셀프 넘버를 구하기 위해 생성된 변수를 구하고 이를 generated_num 변수에 저장한다. natural_num 변수는 1~10000을 저장하고 있으며 셀프 넘버를 구하기 위해 natural_num에 저장된 값들 중에 generated_num 값들을 빼주면 되기에 set자료형을 사용하여 차집합을 연산한다. sorte..
코드 n = int(input()) d = [] for i in range(n): sum = 0 score = 0 case = input() for j in range(len(case)): if case[j] == 'O': score += 1 sum += score else : score = 0 d.append(sum) for K in d: print(K) 문자열에서 'O'가 연속적으로 있는 경우는 if case[j] =='O' 를 통해 score 값으로 1씩 올리며 더해준다. else절에서 score값을 0으로 다시 초기화함으로써 X일때를 표현한다.