[백준] 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 출력결과
[백준] 1065번 한수 - 파이썬
·
백준/구현
https://www.acmicpc.net/problem/1065 1065번: 한수 어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나 www.acmicpc.net 풀이 1 주어진 자연수가 자릿수 2 이하이면 등차수열 조건을 만족한다. 자릿수가 3 이상인 경우에는 자릿수가 1 차이나는 숫자끼리 차이가 같은지 확인한다. # 1065번 한수 n = int(input()) cnt = 0 def check(standard): for j in range(1, len(word)-1): if (int(word[j]) - int(word[j+1])) != standard: r..
[백준] 2610번 회의준비 - 파이썬
·
백준/최단거리
https://www.acmicpc.net/problem/2610 2610번: 회의준비 첫째 중에 회의에 참석하는 사람의 수 N이 주어진다. 참석자들은 1부터 N까지의 자연수로 표현되며 회의에 참석하는 인원은 100 이하이다. 둘째 줄에는 서로 알고 있는 관계의 수 M이 주어진다. 이 www.acmicpc.net 풀이 문제풀이에 BFS와 플로이드와샬 알고리즘을 사용해주었다.BFS => 위원회의 개수를 세는데 사용플로이드 와샬 => 최단경로 계산 BFS는 우리가 BFS 사이클 문제를 많이 풀어왔다면 문제없이 해결 할 수 있었을 것이다.플로이드 와샬 또한 우리가 양방향 그래프이며 노드간의 직접적인 의사전달이 가능하다면 비용 1을 넣어주었다. 문제는 출력문을 뽑아주는것인데 다음단계를 거쳐 출력했다. 1, BF..
[백준] 15552번 빠른 A+B - 파이썬
·
백준/그리디
https://www.acmicpc.net/problem/15552 15552번: 빠른 A+B 첫 줄에 테스트케이스의 개수 T가 주어진다. T는 최대 1,000,000이다. 다음 T줄에는 각각 두 정수 A와 B가 주어진다. A와 B는 1 이상, 1,000 이하이다. www.acmicpc.net 풀이 문제에 나와있듯이 파이썬은 입력을 빨리 받아서 시간소모를 줄여주는 sys.stdin.realine이 있다. 파이썬 문제에서 많은 입력이 주어지면 필수로 쓰이기에 외워두는 것이 좋다. # 15552번 빠른 A+B import sys input = sys.stdin.readline t = int(input()) for _ in range(t): a, b = map(int, input().split()) print..
[백준] 11780번 플로이드 2 - 파이썬
·
백준/최단거리
https://www.acmicpc.net/problem/11780 11780번: 플로이드 2 첫째 줄에 도시의 개수 n이 주어지고 둘째 줄에는 버스의 개수 m이 주어진다. 그리고 셋째 줄부터 m+2줄까지 다음과 같은 버스의 정보가 주어진다. 먼저 처음에는 그 버스의 출발 도시의 번호가 www.acmicpc.net 풀이 이전에 풀어본 플로이드와 다른점은 경로를 출력하는 것이다. 출력을 할 수 있게 visit리스트를 추가했다. # 11780번 플로이드 2 import sys input = sys.stdin.readline INF = sys.maxsize n = int(input()) m = int(input()) # 간선 정보를 저장할 2차원 리스트 graph = [[INF]*(n+1) for _ in r..
[백준] 11404번 플로이드 - 파이썬
·
백준/최단거리
https://www.acmicpc.net/problem/11404 11404번: 플로이드 첫째 줄에 도시의 개수 n이 주어지고 둘째 줄에는 버스의 개수 m이 주어진다. 그리고 셋째 줄부터 m+2줄까지 다음과 같은 버스의 정보가 주어진다. 먼저 처음에는 그 버스의 출발 도시의 번호가 www.acmicpc.net 풀이 플로이드와셜 알고리즘을 사용한다. 문제에서 출발지와 도착지가 같지만 비용이 다른 노선이 있기에 최소비용 노선을 골라서 2차원 리스트에 넣어주어야한다. # 11404번 플로이드 import sys input = sys.stdin.readline INF = sys.maxsize n = int(input()) m = int(input()) graph = [[INF]*(n+1) for _ in ra..
[백준] 11651번 좌표 정렬하기 2 - 파이썬
·
백준/구현
https://www.acmicpc.net/problem/11651 11651번: 좌표 정렬하기 2 첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다. www.acmicpc.net 풀이 1 좌표 정렬하기 1에서 공부할 수 있었듯이 sort( )메서드를 사용하면 x부터 정렬한 뒤 y를 정렬해주었는데 이를 반대로 이용해서 y와 x의 자리를 바꾸어서 리스트에 넣어준 뒤 sort( )를 실행하고 출력은 다시 제자리로 바꿔주어서 뽑아주는 방법이 있다. # 11651번 좌표 정렬하기 2 import sys input = sys...
개발자 성현
'백준' 카테고리의 글 목록 (23 Page)