[백준] 2139번 나는 너가 살아온 날을 알고 있다 - 파이썬
·
백준/구현
https://www.acmicpc.net/problem/2139 2139번: 나는 너가 살아온 날을 알고 있다 우리는 일상생활에서 휴가 일수를 계산하는 것 처럼 두 날짜 사이의 기간을 계산해야 하는 경우가 많다. 이때, 계산을 하는 가장 간단한 방법은 적당한 날짜를 잡은 뒤 계산할 날짜가 될 때까지 www.acmicpc.net 풀이 일, 월, 연도를 받아준 뒤에 윤년인지 아닌지 확인한 뒤에 알맞는 날짜가 담긴 리스트를 가져가서 sum을 이용해서 합산해주면 됩니다. # 2139번 나는 너가 살아온 날을 알고 있다 import sys input = sys.stdin.readline def leap(year): if year % 4 == 0: if year % 400 != 0 and year % 100 ==..
[백준] 1085번 직사각형에서 탈출 - 파이썬
·
백준/구현
https://www.acmicpc.net/problem/1085 1085번: 직사각형에서 탈출 한수는 지금 (x, y)에 있다. 직사각형은 각 변이 좌표축에 평행하고, 왼쪽 아래 꼭짓점은 (0, 0), 오른쪽 위 꼭짓점은 (w, h)에 있다. 직사각형의 경계선까지 가는 거리의 최솟값을 구하는 프로그램 www.acmicpc.net 풀이 한수는 직사각형 경계에 존재하지않는 내부에 있는점이다. 따라서 각 변으로부터의 거리값을 비교해서 제일 작은 수를 써주면 된다. # 1085번 직사각형에서 탈출 x, y, w, h = map(int, input().split()) print(min(x, y, w-x, h-y)) 출력결과
[백준] 1302번 베스트셀러 - 파이썬
·
백준/구현
https://www.acmicpc.net/problem/1302 1302번: 베스트셀러 첫째 줄에 오늘 하루 동안 팔린 책의 개수 N이 주어진다. 이 값은 1,000보다 작거나 같은 자연수이다. 둘째부터 N개의 줄에 책의 제목이 입력으로 들어온다. 책의 제목의 길이는 50보다 작거나 같고 www.acmicpc.net 풀이 일단 책의 이름을 받아주는 리스트와 책의 이름을 중복없이 받는 리스트 2개를 만들어주었다. 이후에 count( ) 메서드를 이용하여 문제를 풀어주었다. # 1302번 베스트셀러 import sys input = sys.stdin.readline n = int(input()) books = [] set_a = [] for _ in range(n): book = input() books...
[백준] 1100번 하얀 칸 - 파이썬
·
백준/구현
https://www.acmicpc.net/problem/1100 1100번: 하얀 칸 체스판은 8×8크기이고, 검정 칸과 하얀 칸이 번갈아가면서 색칠되어 있다. 가장 왼쪽 위칸 (0,0)은 하얀색이다. 체스판의 상태가 주어졌을 때, 하얀 칸 위에 말이 몇 개 있는지 출력하는 프로그램 www.acmicpc.net 풀이 단순한 구현입니다. range의 파라미터를 이용해서 풀어주었습니다. # 1100번 하얀 칸 graph = [] cnt = 0 for _ in range(8): graph.append(list(input())) for i in range(0, 8, 2): for j in range(0, 8, 2): if graph[i][j] == "F": cnt += 1 for i in range(1, 8,..
[백준] 1032번 명령 프롬프트 - 파이썬
·
백준/구현
https://www.acmicpc.net/problem/1032 1032번: 명령 프롬프트 첫째 줄에 파일 이름의 개수 N이 주어진다. 둘째 줄부터 N개의 줄에는 파일 이름이 주어진다. N은 50보다 작거나 같은 자연수이고 파일 이름의 길이는 모두 같고 길이는 최대 50이다. 파일이름은 www.acmicpc.net 풀이 다수의 문자열이 주어지며 각 문자열의 자리에 위치하는 문자가 모두 동일하면 그대로 출력하며, 틀리다면 ?로 출력한다. # 1032번 명령 프롬프트 import sys input = sys.stdin.readline t = int(input()) word = [] for i in range(t): word.append(input().rstrip()) n = len(word[0]) ans ..
[백준] 15650번 N과 M (2) - 파이썬
·
백준/DFS&BFS
https://www.acmicpc.net/problem/15650 15650번: N과 M (2) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 풀이 백트래킹 알고리즘에 대해 배울 수 있는 N과 M 시리즈의 2번째 문제입니다. 1번째 문제와 달라진 점은 start 인자를 넣어주어서 for문에서 현재 arr들어가있는 숫자보다 작은 숫자는 들어가지않게 해주는 코드입니다. # 15650번 N과 M (2) n, m = map(int, input().split()) arr = [] def dfs(start): if len(arr) == m: pr..
[백준] 15649번 N과 M (1) - 파이썬
·
백준/DFS&BFS
https://www.acmicpc.net/problem/15649 15649번: N과 M (1) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 풀이 DFS의 일종인 백트래킹 알고리즘입니다. 사실상 백트래킹은 구현문제에 가깝습니다. 생각하기는 쉬우나 코드를 제어해주는 부분을 막상 작성하려하면 마음처럼 되지않을 경우가 많습니다. 아래 코드는 arr에 숫자를 하나씩 넣어줘서 조건에 만족하는 m이 나올 경우 출력해주는 코드이며, for문을 통해 arr에 들어가지않은 코드를 찾아줍니다. 재귀와 백트래킹에 대한 이해도가 요구되는 문제입니다. # ..
[백준] 1075번 나누기 - 파이썬
·
백준/구현
https://www.acmicpc.net/problem/1075 1075번: 나누기 첫째 줄에 N, 둘째 줄에 F가 주어진다. N은 100보다 크거나 같고, 2,000,000,000보다 작거나 같은 자연수이다. F는 100보다 작거나 같은 자연수이다. www.acmicpc.net 풀이 단순한 구현이다. 코드를 읽어보면 이해 할 것이다. # 1075 나누기 n = int(input()) f = int(input()) n = (n - n % 100) for i in range(n, n+100): if i % f == 0: print("".join(str(i)[-2:])) break 출력결과
개발자 성현
개발새발 블로그