전체 글

전체 글

    백준 6064 카잉 달력

    https://www.acmicpc.net/problem/6064 6064번: 카잉 달력 입력 데이터는 표준 입력을 사용한다. 입력은 T개의 테스트 데이터로 구성된다. 입력의 첫 번째 줄에는 입력 데이터의 수를 나타내는 정수 T가 주어진다. 각 테스트 데이터는 한 줄로 구성된다. www.acmicpc.net import sys num = int(sys.stdin.readline()) for _ in range(num): m,n,x,y = map(int,sys.stdin.readline().split()) cnt = 0 i = 0 j = 0 while True: if i < m and j < n: i += 1 j += 1 cnt += 1 elif i == m: i = 1 j += 1 cnt += 1 eli..

    Coding Test(Algorithm) - Python

    Coding Test(Algorithm) - Python

    문제 해결 과정 1. 지문 읽기 및 컴퓨터적 사고 2. 요구사항(복잡도) 분석 3. 문제 해결을 위한 아이디어 찾기 4. 소스코드 설계 및 코딩 시간 복잡도 O(n^2) => O(xlogx) => O(x) => O(logx) N의 범위 500 : O(N^3) N의 범위 2,000: O(N^2) N의 범위 100,000 : O(NlogN) N의 범위 10,000,000 : O(N) 수행 시간 측정 import time start_time = time.time() # 측정 시작 # 프로그램 소스코드 end_time = time.time() # 측정 종료 print("time:", end_time - start_time) # 수행 시간 출력 지수 표현 방식 #1,000,000,000 지수 표현 방식 a = 1..

    Coding Test(Grammar) - Python

    Input # map()을 이용하여 list에 저장 data = list(map(int,input().split())) [1, 1] #map()을 이용하여 두 변수에 저장 a,b = map(int,input().split()) 1 1 #sys.stdin.readline()을 사용하면 줄 바꿈 기호가 입력 되기때문에 rstrip() 같이 사용 data = list(map(str,sys.stdin.readline())) #['w', 'a', '\n'] num = list(map(str,input())) #['w', 'a'] # 123 => [1,2,3], 각 자리수 따로따로 저장됨 data = list(map(int,str(i))) data = list(map(int,input())) Dictionary #..

    백준 17427 약수의 합2

    https://www.acmicpc.net/problem/17427 17427번: 약수의 합 2 두 자연수 A와 B가 있을 때, A = BC를 만족하는 자연수 C를 A의 약수라고 한다. 예를 들어, 2의 약수는 1, 2가 있고, 24의 약수는 1, 2, 3, 4, 6, 8, 12, 24가 있다. 자연수 A의 약수의 합은 A의 모든 약수를 더 www.acmicpc.net 약수를 구하는 방법은 총 2가지로 알고 있었다. 1. 자연수 N이 주어졌을 때, 1부터 N까지 나누어가면서 나머지가 0인 값을 구하는 방법 => O(n^2) 2. 자연수 N이 주어졌을 때, 약수는 서로 대칭구조를 이루고 있으므로 1부터 √A까지의 약수를 구하는 방법 => O(n√(n)) 시간제한이 0.5초 이기 때문에 위의 두 방법은 이용..

    ##백준 15990 1, 2, 3 더하기5

    ##백준 15990 1, 2, 3 더하기5

    https://www.acmicpc.net/problem/15990 15990번: 1, 2, 3 더하기 5 각 테스트 케이스마다, n을 1, 2, 3의 합으로 나타내는 방법의 수를 1,000,000,009로 나눈 나머지를 출력한다. www.acmicpc.net 정수 4를 1, 2, 3의 합으로 나타내는 방법은 총 3가지가 있다. 합을 나타낼 때는 수를 1개 이상 사용해야 한다. 단, 같은 수를 두 번 이상 연속해서 사용하면 안 된다. 1+2+1 1+3 3+1 2+2 는 사용불가 정수 n이 주어졌을 때, n을 1, 2, 3의 합으로 나타내는 방법의 수를 구하는 프로그램을 작성하시오. import sys input = sys.stdin.readline dp = [[0, 0, 0, 0] for i in ran..

    백준 11052 카드 구매하기

    https://www.acmicpc.net/problem/11052 11052번: 카드 구매하기 첫째 줄에 민규가 구매하려고 하는 카드의 개수 N이 주어진다. (1 ≤ N ≤ 1,000) 둘째 줄에는 Pi가 P1부터 PN까지 순서대로 주어진다. (1 ≤ Pi ≤ 10,000) www.acmicpc.net n = int(input()) dp = [0] * (n+1) data = [0] + list(map(int,input().split())) dp[1] = data[1] for i in range(2,n+1): for j in range(1,i+1): if dp[i] < dp[i-j] + data[j]: dp[i] = dp[i - j] + data[j] print(dp[n]) DP, 다이나믹 프로그래밍 문..

    백준 1406 에디터

    https://www.acmicpc.net/problem/1406 1406번: 에디터 첫째 줄에는 초기에 편집기에 입력되어 있는 문자열이 주어진다. 이 문자열은 길이가 N이고, 영어 소문자로만 이루어져 있으며, 길이는 100,000을 넘지 않는다. 둘째 줄에는 입력할 명령어의 개수 www.acmicpc.net 스택에 대해 새롭게 접근할 수 있는 재밌는 문제라 다시 정리를 해보려고 한다. 문제를 처음 접근했을땐 단순 구현문제로 접근하여 아래와 같이 코딩을 하였으나 시간 초과가 되어버렸다. data = list(map(str,input())) n = int(input()) cursor = len(data) for _ in range(n): x = input().split() if x[0] == 'L' and..

    백준 1018 체스판 다시 칠하기

    백준 1018 체스판 다시 칠하기

    https://www.acmicpc.net/problem/1018 1018번: 체스판 다시 칠하기 첫째 줄에 N과 M이 주어진다. N과 M은 8보다 크거나 같고, 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 보드의 각 행의 상태가 주어진다. B는 검은색이며, W는 흰색이다. www.acmicpc.net 생각보다 어려워서 꼼꼼히 풀어보려고 블로그에 남긴다. n,m = map(int,input().split()) board = [] count = [] for _ in range(n): board.append(input()) for i in range(n-7): for j in range(m-7): black_paint = 0 white_paint = 0 for a in range(i,i+8)..