baekjoon 383

[baekjoon] 백준 1337번(파이썬): 올바른 배열

문제 1337번: 올바른 배열 첫째 줄에 배열의 크기 N이 주어진다. N은 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에 배열의 원소가 한 줄에 하나씩 주어진다. 원소는 1,000,000,000보다 작거나 같은 음이 아닌 정수이 www.acmicpc.net 알고리즘 - 반복문을 통해 배열을 확인한다. - 배열의 각 수에서 시작되는 연속적인 수가 배열에 있는지 확인한다. - 연속적이지 않은 수가 있다면 카운트 후 answer에 추가한다. - answer에 제일 작은 값을 출력한다. 코드 import sys n = int(sys.stdin.readline()) m = sorted(int(sys.stdin.readline()) for _ in range(n)) answer = [] # 반복문을 통..

CodingTest/Baekjoon 2022.08.16

[baekjoon] 백준 1308번(자바): D-Day

문제 1308번: D-Day 첫째 줄에 오늘의 날짜가 주어지고, 두 번째 줄에 D-Day인 날의 날짜가 주어진다. 날짜는 연도, 월, 일순으로 주어지며, 공백으로 구분한다. 입력 범위는 1년 1월 1일부터 9999년 12월 31일 까지 이다. www.acmicpc.net 알고리즘 - 반복문을 통해 D-Day를 카운트한다. - 매 순간 현재 날짜, 현재 월, 년도를 확인하고 카운트한다. - 확인하는 과정으로는 현재 월의 마지막 날짜인지, 마지막 달의 마지막 날짜인지, 윤년과 평년인지 확인한다. - 현재 날짜와 마지막 날짜가 같다면 D-Day를 출력하고 반복문을 멈춘다. 코드 import java.io.BufferedReader; import java.io.InputStreamReader; import ja..

CodingTest/Baekjoon 2022.08.15

[baekjoon] 백준 2960번(자바): 에라토스테네스의 체

문제 2960번: 에라토스테네스의 체 2, 4, 6, 8, 10, 3, 9, 5, 7 순서대로 지워진다. 7번째 지워진 수는 9이다. www.acmicpc.net 알고리즘 - 2중 for문을 통해 문제의 조건을 수행한다. - cnt 변수를 통해 소스를 찾고 k번째 소수라면 그때의 소수를 출력 후 시스템을 종료시킨다. 코드 package implementation; import java.io.BufferedReader; import java.io.InputStreamReader; public class Main { public static void main(String[] args) throws Exception{ BufferedReader br = new BufferedReader(new InputStr..

CodingTest/Baekjoon 2022.08.14

[baekjoon] 백준 11723번(자바): 집합

문제 11723번: 집합 첫째 줄에 수행해야 하는 연산의 수 M (1 ≤ M ≤ 3,000,000)이 주어진다. 둘째 줄부터 M개의 줄에 수행해야 하는 연산이 한 줄에 하나씩 주어진다. www.acmicpc.net 알고리즘 - 문제의 조건에 맞게 switch문으로 문제를 수행한다. 코드 package implementation; import java.io.*; import java.util.HashSet; import java.util.Set; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System..

CodingTest/Baekjoon 2022.08.13

[baekjoon] 백준 1205번(파이썬): 등수 구하기

문제 1205번: 등수 구하기 첫째 줄에 N, 태수의 새로운 점수, 그리고 P가 주어진다. P는 10보다 크거나 같고, 50보다 작거나 같은 정수, N은 0보다 크거나 같고, P보다 작거나 같은 정수이다. 그리고 모든 점수는 2,000,000,000보 www.acmicpc.net 알고리즘 - 랭킹 리스트에 점수가 있는지 확인하고 점수가 없다면 무조건 1등이므로 1을 출력한다. - 랭킹 리스트에 점수가 있다면 랭킹 리스트에 새로운 점수를 넣고 새로운 점수의 등수를 확인한다. - 등수가 랭킹의 올라갈 수 있는 등수보다 크다면 -1을 출력한다. - 랭킹 리스트의 길이와 랭킹의 올라갈 수 있는 등수의 길이가 같고 마지막 등수가 새로운 점수의 등수와 같다면 즉, 새로운 점수가 마지막 점수와 동점이라면 -1을 출력..

CodingTest/Baekjoon 2022.08.10

[baekjoon] 백준 1063번(파이썬): 킹

문제 1063번: 킹 8*8크기의 체스판에 왕이 하나 있다. 킹의 현재 위치가 주어진다. 체스판에서 말의 위치는 다음과 같이 주어진다. 알파벳 하나와 숫자 하나로 이루어져 있는데, 알파벳은 열을 상징하고, 숫자는 www.acmicpc.net 알고리즘 - 킹의 자표와 돌의 좌표를 아스키코드를 통해 x, y형태로 바꾼다. - 킹이 움직이는 명령을 딕셔너리로 받아서 좌표 형태로 바꾼다. - 반복문을 통해 명령을 입력받고 킹의 좌표와 돌의 좌표를 움직여준다. 코드 import sys k, s, n = map(str, sys.stdin.readline().split()) k = list(map(int, [ord(k[0]) - 64, k[1]])) s = list(map(int, [ord(s[0]) - 64, s[..

CodingTest/Baekjoon 2022.08.09

[baekjoon] 백준 1929번(파이썬): 소수 구하기

문제 1929번: 소수 구하기 첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1 ≤ M ≤ N ≤ 1,000,000) M이상 N이하의 소수가 하나 이상 있는 입력만 주어진다. www.acmicpc.net 알고리즘 - 일반적으로 소수를 구하는 방법으로 구하게 되면 시간 복잡도가 O(n^2)이고 에라토스테네스의 체를 통해 구하게 되면 시간 복잡도가 O(log n)이다. - 따라서 에라토스테네스의 체를 통해 소수를 구한다. - 구한 소수가 범위 내에 있다면 출력한다. 코드 import sys m, n = map(int, sys.stdin.readline().split()) dp = [False, False] + [True] * 1000001 primes = [] # 에라토스테네스의 체를 통해 ..

CodingTest/Baekjoon 2022.08.07

[baekjoon] 백준 7568번(파이썬): 덩치

문제 7568번: 덩치 우리는 사람의 덩치를 키와 몸무게, 이 두 개의 값으로 표현하여 그 등수를 매겨보려고 한다. 어떤 사람의 몸무게가 x kg이고 키가 y cm라면 이 사람의 덩치는 (x, y)로 표시된다. 두 사람 A 와 B의 덩 www.acmicpc.net 알고리즘 - 반복문을 통해 모든 몸무게와 키를 비교한다. - 비교하는 몸무게와 키가 더 작다면 그보다 큰 값이 있는 것으로 등수를 카운트해준다. 코드 import sys n = int(sys.stdin.readline()) m = [list(map(int, sys.stdin.readline().split())) for _ in range(n)] answer = [] # 반복문을 통해 몸무게와 키를 확인 for x, y in m: cnt = 1 ..

CodingTest/Baekjoon 2022.07.21

[baekjoon] 백준 4673번(파이썬): 셀프 넘버

문제 4673번: 셀프 넘버 셀프 넘버는 1949년 인도 수학자 D.R. Kaprekar가 이름 붙였다. 양의 정수 n에 대해서 d(n)을 n과 n의 각 자리수를 더하는 함수라고 정의하자. 예를 들어, d(75) = 75+7+5 = 87이다. 양의 정수 n이 주어졌을 때, www.acmicpc.net 알고리즘 - 함수와 반복문을 통해 셀프 넘버가 아닌 수를 찾는다. - 찾은 후 1부터 10001번 반복하여 셀프 넘버가 아닌 수와 비교하여 셀프 넘버인 수를 출력한다. 코드 # 셀프 넘버가 아닌 수를 찾는 함수 def solution(n): n = n + sum(map(int, str(n))) return n answer = [] # 반복문을 통해 셀프 넘버가 아닌 수를 찾는다. for i in range(..

CodingTest/Baekjoon 2022.06.28

[baekjoon] 백준 1504번(파이썬): 특정한 최단 경로

문제 1504번: 특정한 최단 경로 첫째 줄에 정점의 개수 N과 간선의 개수 E가 주어진다. (2 ≤ N ≤ 800, 0 ≤ E ≤ 200,000) 둘째 줄부터 E개의 줄에 걸쳐서 세 개의 정수 a, b, c가 주어지는데, a번 정점에서 b번 정점까지 양방향 길이 존 www.acmicpc.net 알고리즘 - 다익스트라를 통해 문제를 수행한다 - 1부터 n까지의 다익스트라와 v1부터 n까지의 다익스트라와 v2부터 n까지의 다익스트라를 구한다. - 1-v1-v2-n과 1-v2-v1-n 으로 이동하는 경우중 최단 거리를 구한다. - 최단 거리가 존재한다면 출력하고 존재하지 않는다면 -1을 출력한다. 코드 import sys import heapq # 다익스트라 def solution(start): visite..

CodingTest/Baekjoon 2022.06.27