728x90
반응형

실버5 17

[파이썬] BOJ_11004(K번째 수)

문제 https://www.acmicpc.net/problem/11004 11004번: K번째 수 수 N개 A1, A2, ..., AN이 주어진다. A를 오름차순 정렬했을 때, 앞에서부터 K번째 있는 수를 구하는 프로그램을 작성하시오. www.acmicpc.net 해설 숫자를 리스트로 받아 정렬한 후 리스트의 인덱스는 0부터 시작하므로 k-1번째 숫자를 출력하면 된다. 코드 -파이썬 #백준 11004(K번째 수) n, k = map(int, input().split()) num = list(map(int, input().split())) num.sort() print(num[k-1])

알고리즘/백준 2022.05.18

[파이썬] BOJ_10989(수 정렬하기 3)

문제 https://www.acmicpc.net/problem/10989 10989번: 수 정렬하기 3 첫째 줄에 수의 개수 N(1 ≤ N ≤ 10,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 10,000보다 작거나 같은 자연수이다. www.acmicpc.net 해설 이 문제는 정렬이라고 해서 정렬 내장 함수를 사용하면 메모리 초과가 발생한다. 10,000까지 입력 가능하기 때문에 이를 리스트로 먼저 만들어 놓고 각 숫자별로 입력받은 횟수만큼 1을 더해주면 된다. 그리고 나서 10001번 만큼 반복문을 돌며 리스트의 i값이 0이 아닐 경우 i를 횟수만큼 출력하면 된다. 코드 -파이썬 #백준 10989(수 정렬하기 3) import sys n = int(sys.stdin..

알고리즘/백준 2022.05.17

[파이썬] BOJ_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 해설 이 문제는 y좌표가 증가하는 순으로, y좌표가 같다면 x좌표가 증가하는 순으로 정렬하는 문제이다. 파이썬 내장 함수를 사용한다면, 정렬은 어렵지 않다. 나는 입력받은 좌표 값을 temp를 이용해 y, x로 뒤바꿔 정렬했다. 다른 분들은 람다를 이용해 한두줄로 끝내던데 난 아직 람다가 익숙하지 않아서 어렵다.. 람다를 이용하면 시간..

알고리즘/백준 2022.05.17

[파이썬] BOJ_1181(단어 정렬)

문제 https://www.acmicpc.net/problem/1181 1181번: 단어 정렬 첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다. www.acmicpc.net 해설 이 문제는 단어를 리스트로 입력받고 set()으로 중복 제거 후 알파벳 순 정렬, 길이 순 정렬을 해주면 된다. 알파벳 순 정렬은 누구나 다 알듯이 sorted()를 쓰면 되고 길이 순 정렬은 sort() 함수에 key로 길이를 넣어주면 된다. 코드 -파이썬 #백준 1181(단어 정렬) n = int(input()) word = [] for _ in range(n): a = ..

알고리즘/백준 2022.04.20

[파이썬] BOJ_11650(좌표 정렬하기)

문제 https://www.acmicpc.net/problem/11650 11650번: 좌표 정렬하기 첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다. www.acmicpc.net 해설 list로 입력받아서 정렬해주기만 하면 끝난다. 그러나 실행 시간은 많이 걸린다. input()으로 입력받으면 시간 초과로 실패한다. 코드 -파이썬 #백준 11650(좌표 정렬하기) import sys n = int(sys.stdin.readline()) y = [] for i in range(n): x = list(map(int, ..

알고리즘/백준 2022.04.20

[파이썬, 자바] BOJ_1476(날짜 계산)

문제 www.acmicpc.net/problem/1476 1476번: 날짜 계산 준규가 사는 나라는 우리가 사용하는 연도와 다른 방식을 이용한다. 준규가 사는 나라에서는 수 3개를 이용해서 연도를 나타낸다. 각각의 수는 지구, 태양, 그리고 달을 나타낸다. 지구를 나타 www.acmicpc.net 해설 지구, 태양, 달의 주기가 다르기 때문에 셋 모두의 나머지가 0이 될 때 까지 1년씩 더해줘야 한다. 코드 -파이썬 #백준 1476(날짜 계산) e, s, m = map(int, input().split()) #지구, 태양, 달 cnt = 1 while True: if (cnt - e) % 15 == 0 and (cnt - s) % 28 == 0 and (cnt - m) % 19 == 0: break cn..

알고리즘/백준 2021.04.13

[파이썬, 자바] BOJ_10814(나이순 정렬)

문제 www.acmicpc.net/problem/10814 10814번: 나이순 정렬 온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다. 이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을 www.acmicpc.net 해설 이 문제는 가입한 순서대로 입력이 되기 때문에 나이만 비교하면 된다. 파이썬은 람다식을 이용해 비교를 했고, 자바는 이차원 배열을 이용해 비교를 했다. 코드 -파이썬 #백준 10814(나이순 정렬) n = int(input()) #회원 수 member = [] for _ in range(n): age, name = map(str, input().split()) #회원 나이, 이름 age = int(age)..

알고리즘/백준 2021.04.02

[파이썬, 자바] BOJ_1475(방 번호)

문제 www.acmicpc.net/problem/1475 1475번: 방 번호 첫째 줄에 다솜이의 방 번호 N이 주어진다. N은 1,000,000보다 작거나 같은 자연수 또는 0이다. www.acmicpc.net 해설 번호가 6이나 9일 때는 둘 중 하나로 값을 몰아주면 계산하기 편하다. 각 해당 번호의 배열 값을 +1 해주고 난 후에는 6, 9 중 값을 몰아줬던 숫자가 짝수인지 홀수인지 판단해야 한다. 짝수라면 세트의 개수가 맞아 떨어질테고 홀수라면 1개 더 필요하기 때문이다. 위의 과정을 모두 끝낸 후엔, 배열의 값 중 최댓값을 찾으면 끝난다. 코드 -파이썬 #백준 1475(방 번호) set = [0] * 9 num = list(map(int, str(input()))) #방 번호 #해당 번호 ++ ..

알고리즘/백준 2021.03.25

[파이썬, 자바] BOJ_2628(종이자르기)

문제 www.acmicpc.net/problem/2628 2628번: 종이자르기 아래 과 같이 직사각형 모양의 종이가 있다. 이 종이는 가로방향과 세로 방향으로 1㎝마다 점선이 그어져 있다. 가로 점선은 위에서 아래로 1번부터 차례로 번호가 붙어 있고, 세로 점선 www.acmicpc.net 해설 가로, 세로로 종이를 잘라서 생긴 사각형들 중 가장 큰 사각형 조각을 찾는 문제이다. type이 0이면 가로로 자르는 것이고 1이면 세로로 자르는 것이다. 잘려진 각 사각형의 가로, 세로 길이를 구해 곱해주면 넓이를 구할 수 있다. 더 넓은 조각이 나올 때 마다 resMax 값을 교체해주면 된다. 코드 -파이썬 #백준 2628(종이자르기) x, y = map(int, input().split()) #가로, 세로..

알고리즘/백준 2021.03.09

[파이썬, 자바] BOJ_20363(당근 키우기)

문제 https://www.acmicpc.net/problem/20363 20363번: 당근 키우기 첫째 줄에 X와 Y (0 ≤ X, Y ≤ 109)를 의미하는 정수가 공백으로 구분되어 주어진다. www.acmicpc.net 해설 이 문제는 우선 자기가 예시를 만들어서 풀어보는 것이 좋다. 예시를 직접 손으로 풀다보면, 한 가지 풀이 방법에 대한 의문이 생긴다. 그리고 그 의문을 코드로 옮겨보면 풀리는 문제이다. 위의 예시들을 직접 손으로 풀어봤을 때, 온기, 수분의 최소 합을 계산하면 각각 답이 빨간색 글씨 처럼 나온다. 이 것들을 살펴보면, 온기 + 수분 + (min(온기, 수분) / 10) 이 답이 된다는 것을 알 수 있다. 결국 이 계산식 대로만 풀면 되고, 백준에서 제시한 2번째 예시를 실행해보..

알고리즘/백준 2021.02.15
728x90
반응형