문제 풀이아이디어 문제이다.천진수를 이용하여 [1,1,1,1, ..., 1000,1000,1000, ... ,1000]이라는 수열을 고안한다. (1과 1000은 각각 1000개씩 있다.)위 수열은 연속한 범위의 합으로 1,000,000까지의 모든 숫자를 만들 수 있다. 코드print(2000) arr = [1 for i in range(1000)] + [1000 for _ in range(1000)] for i in arr: print(i, end=' ')
Koala - 15기/기초 알고리즘 스터디
https://www.acmicpc.net/problem/4963문제 풀이1. r과 c를 입력받기 + 0 0 을 입력받는 순간 탈출\2. arr 리스트에 섬의 상황 입력하기3. 비교를 위한 check 리스트 생성4. arr 전체를 돌며 flood_fill 함수 실행5. flood_fill 함수가 끝나면 섬 1개를 의미하므로 cnt 1 증가flood_fill 함수대각선까지 감안하여야 하므로 x,y에 더해줄 d 생성함수의 인자인 x,y에 맞는 nx, ny에 맞게 수정 -> 추가 flood_fill 실행 문제 코드def flood_fill(x, y): for i in range(len(d)): nx, ny = x + d[i][0], y + d[i][1] if 0
https://www.acmicpc.net/problem/1002문제문제풀이1. 터렛 두 개의 x, y 좌표를 비교하여 변수 선언한다2. 좌표를 비교하여 두 개의 원을 설정한다3. 중심거리와 위치의 관계를 이용하여 두 원의 접점의 개수를 구한다.코드
https://www.acmicpc.net/problem/10974문제풀이숫자 N을 입력받아 1부터 N까지의 수로 이루어진 리스트를 만든다. 그리고 순열 모듈을 통하여 리스트에 있는 수들의 순열을 구한다.소스코드from itertools import permutations as pmN = int(input())arr = [i for i in range(1, N+1)]for t in pm(arr, N): print(' '.join(map(str, t)))
https://www.acmicpc.net/problem/11866알고리즘 분류구현 자료구조큐n, k = map(int, input().split())n_lst = list(range(1, n+1))ans = []i = k-1while n_lst: ans.append(n_lst.pop(i)) if i == len(n_lst): i = 0 for _ in range(k-1): i += 1 if i == len(n_lst): i = 0print('')문제풀이 1부터 n까지 들어있는 리스트가 모두 사라질때까지 반복index = i 인 수를 pop()하고 정답 리스트에 append()pop()을 통해 이후 인덱스가 1씩 줄었으므로 이후 k번째 수를 제거하기 위해 i에 ..
https://www.acmicpc.net/problem/16435문제풀이과일의 높이들을 저장한 리스트를 오름차순으로 변경한다. 과일의 높이를 하나씩 가져와서 스네이크버드의 길이와 비교해서 만약 스네이크버드의 길이가 과일의 높이보다 크거나 같으면 스네이크버드의 길이를 1만큼 증가한다.소스코드def eat(i): global L if i == len(arr): return if arr[i]
https://www.acmicpc.net/problem/17249문제 풀이1. 가운데 얼굴을 기준으로 나누어 오른쪽 왼쪽 문자열로 입력받기2. 왼쪽 주먹, 오른쪽 주먹 개수를 저장할 변수 선언3. 오른쪽/왼쪽 반복하며 @(주먹) 개수 계산4. 계산 결과 출력문제 코드l, r = input().split("(^0^)")cnt_l = 0cnt_r = 0for i in range(len(l)): if l[i] == '@': cnt_l += 1for i in range(len(r)): if r[i] == '@': cnt_r += 1print(cnt_l, cnt_r)
10872번: 팩토리얼 (acmicpc.net)문제풀이1. 숫자를 입력받음.2. 변수 D를 1씩 빼가면서 1보다 클 동안 fac과 곱해주어 팩토리얼을 구해줌.3. 입력받은 변수가 0일 경우에는 1을 출력한다는 조건문을 추가.4. 구한 팩토리얼값을 출력해준다.소스코드D = int(input())fac = 1if D != 0: while D > 1: fac = fac * D D -= 1else: fac = 1print(fac)
https://www.acmicpc.net/problem/2852문제풀이m,s,past = 0,0,0t1,t2 = 0,0score = [0,0]for _ in range(int(input())): goal,time = input().split() m,s = map(int,time.split(":")) x = m*60 + s if score[0]>score[1]: t1 += x-past elif score[0]score[1]: t1 += 48*60-pastelif score[0]1. 초단위로 바꾸고 득점한 팀의 스코어를 누적2. 이번 득점시간까지 어떤 팀이 이기고 있었는지 시간을 누적하고, 스코어 현황을 업데이트3. 경기가 종료되면, 승리팀의 시간을 최종으로 누..
문제 풀이테스트 케이스의 수를 받고 큐 자료구조에 중요도를 넣는다.주어진 입력값 중 m 값을 계속 바꾸며 내가 찾는 문서가 어디 있는지 추적한다.문서를 인쇄할 때마다 카운트를 늘려 몇 번째로 출력되는지를 찾는다.내가 찾는 문서가 가장 앞에 있고, 중요도가 최댓값과 같다면 그 때 출력할 수 있음을 유의하며 코드를 작성한다.코드from collections import deque t = int(input()) for _ in range(t): n, m = map(int, input().split()) lst = list(map(int, input().split())) q = deque() cnt = 1 for i in lst: q.append(i) ..