목록coding test (104)
just inside
복잡한 문제를 해결하기 위해 사용되는 최적화 기법큰 문제를 여러 작은 부분 문제로 나누어 해결하고, 그 결과를 저장하여 같은 부분 문제를 반복적으로 해결하지 않도록 하는 방식최적화 문제나 점화식 기반 문제에서 사용됨 주요 개념부분 문제의 중복문제 해결 과정에서 동일한 부분 문제가 반복적으로 나타남ex) 피보나치 수열 - 계산 시 동일한 피보나치 수가 여러 번 계산최적 부분 구조문제의 최적 해결 방법이 부분 문제들의 최적 해결 방법으로 구성되는 경우ex) 최단 경로 문제 - 전체 경로의 최적 경로는 부분 경로의 최적 경로로 구성메모이제이션 (Memoization) 또는 타뷸레이션 (Tabulating)메모이제이션 : 재귀적 접근에서 이미 계산된 부분 문제의 결과를 저장하여 중복 계산 방지타뷸레이션 : 반복..
문제 링크https://www.acmicpc.net/problem/2609문제 설명 두 개의 자연수를 입력받아 최대 공약수와 최소 공배수를 출력하는 프로그램을 작성하시오. 입력 첫째 줄에는 두 개의 자연수가 주어진다. 이 둘은 10,000이하의 자연수이며 사이에 한 칸의 공백이 주어진다. 출력 첫째 줄에는 입력으로 주어진 두 수의 최대공약수를, 둘째 줄에는 입력으로 주어진 두 수의 최소 공배수를 출력한다. 제출 코드import sysinput = sys.stdin.readlinedef gcd(a, b): while b != 0: a, b = b, a % b return a def lcd(a, b): return abs(a*b) // gcd(a, b)a, b = map..
유클리드 호제법 (Euclidean Algorithm) / 최대공약수 계산두 정수의 최대공약수 (GCD, Greatest Common Divisor)를 효율적으로 계산하는 알고리즘두 수의 최대공약수가 두 수의 차이의 최대공약수와 같다는 것원리두 정수 $a$와 $b$ $(a>b)$의 최대공약수를 구하기 위해 다음 과정을 반복$a$를 $b$로 나눈 나머지 $r$을 구한다.$a$를 $b$로, $b$를 $r$로 대체한다.$r$이 0이 될 때까지 이 과정을 반복한다.$r$이 0이 되었을 때, $b$가 $a$와 $b$의 최대공약수$$ GCD(a,b)=GCD(b,a\bmod b)$$def gcd(a,b): while b != 0: a, b = b, a % b return a시간복잡도는 $O(log\ min(a..
문제 링크https://www.acmicpc.net/problem/1546문제 설명세준이는 기말고사를 망쳤다. 세준이는 점수를 조작해서 집에 가져가기로 했다. 일단 세준이는 자기 점수 중에 최댓값을 골랐다. 이 값을 M이라고 한다. 그리고 나서 모든 점수를 점수/M*100으로 고쳤다.예를 들어, 세준이의 최고점이 70이고, 수학점수가 50이었으면 수학점수는 50/70*100이 되어 71.43점이 된다.세준이의 성적을 위의 방법대로 새로 계산했을 때, 새로운 평균을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 시험 본 과목의 개수 N이 주어진다. 이 값은 1000보다 작거나 같다. 둘째 줄에 세준이의 현재 성적이 주어진다. 이 값은 100보다 작거나 같은 음이 아닌 정수이고, 적어도 하나의 값은 0보다 ..
문제 링크https://www.acmicpc.net/problem/1259문제 설명어떤 단어를 뒤에서부터 읽어도 똑같다면 그 단어를 팰린드롬이라고 한다. 'radar', 'sees'는 팰린드롬이다.수도 팰린드롬으로 취급할 수 있다. 수의 숫자들을 뒤에서부터 읽어도 같다면 그 수는 팰린드롬수다. 121, 12421 등은 팰린드롬수다. 123, 1231은 뒤에서부터 읽으면 다르므로 팰린드롬수가 아니다. 또한 10도 팰린드롬수가 아닌데, 앞에 무의미한 0이 올 수 있다면 010이 되어 팰린드롬수로 취급할 수도 있지만, 특별히 이번 문제에서는 무의미한 0이 앞에 올 수 없다고 하자. 입력 입력은 여러 개의 테스트 케이스로 이루어져 있으며, 각 줄마다 1 이상 99999 이하의 정수가 주어진다. 입력의 마지막 줄..
2024.07.15 - [coding test/정렬] - [백준] Silver 5. 11650 - 좌표 정렬하기 python [백준] Silver 5. 11650 - 좌표 정렬하기 python문제 링크https://www.acmicpc.net/problem/11650문제 설명 2차원 평면 위의 점 N개가 주어진다. 좌표를 x좌표가 증가하는 순으로, x좌표가 같으면 y좌표가 증가하는 순서로 정렬한 다음 출력하는 프로그램me-unknown.tistory.com위 문제와 키만 다르게 설정해주면 되는 문제이다. 문제 링크https://www.acmicpc.net/problem/11651문제 설명 2차원 평면 위의 점 N개가 주어진다. 좌표를 y좌표가 증가하는 순으로, y좌표가 같으면 x좌표가 증가하는 순서로 정..
문제 링크https://www.acmicpc.net/problem/11650문제 설명 2차원 평면 위의 점 N개가 주어진다. 좌표를 x좌표가 증가하는 순으로, x좌표가 같으면 y좌표가 증가하는 순서로 정렬한 다음 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다. 출력 첫째 줄부터 N개의 줄에 점을 정렬한 결과를 출력한다. 제출 코드import sysinput = sys.stdin.readlinen = int(input().rstrip())nums = [list(map(int,..
문제 링크https://www.acmicpc.net/problem/10814문제 설명 온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다. 이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을 작성하시오. 입력첫째 줄에 온라인 저지 회원의 수 N이 주어진다. (1 ≤ N ≤ 100,000)둘째 줄부터 N개의 줄에는 각 회원의 나이와 이름이 공백으로 구분되어 주어진다. 나이는 1보다 크거나 같으며, 200보다 작거나 같은 정수이고, 이름은 알파벳 대소문자로 이루어져 있고, 길이가 100보다 작거나 같은 문자열이다. 입력은 가입한 순서로 주어진다. 출력 첫째 줄부터 총 N개의 줄에 걸쳐 온라인 저지 회원을 나이 순, 나이가 같으면..