정렬 47

[Java] 백준 풀기 10817 - 세 수

자바 백준 10817번 브론즈 3 https://www.acmicpc.net/problem/10817 10817번: 세 수 첫째 줄에 세 정수 A, B, C가 공백으로 구분되어 주어진다. (1 ≤ A, B, C ≤ 100) www.acmicpc.net 문제 보기 분류: 구현, 정렬 문제 풀기 정렬을 구현하지 않고 Collections.sort() 를 이용해 본다. Collections.sort(numList, Collections.reverseOrder()); 내림차순 정렬을 사용하기 위해 reverseOrder() 또한 입력되었다. numList.get(1) 두 번째로 큰 수를 찾기 위해 내림차순 되어있는 ArrayList 에서 두 번째에 해당하는 index 1 의 값을 .get(1) 로 불러온다. 코..

공부하기/백준 2023.01.23

[Python] 백준 풀기 2628 - 종이자르기

파이썬 백준 2628번 실버 5 https://www.acmicpc.net/problem/2628 2628번: 종이자르기 아래 과 같이 직사각형 모양의 종이가 있다. 이 종이는 가로방향과 세로 방향으로 1㎝마다 점선이 그어져 있다. 가로 점선은 위에서 아래로 1번부터 차례로 번호가 붙어 있고, 세로 점선 www.acmicpc.net 문제 보기 분류: 정렬 문제 풀기 종이 세로의 처음과 끝, 종이 가로의 처음과 끝 그리고 잘라야 하는 주어진 위치를 2차원 리스트 cutting_ls 에 모두 입력 받는다. 2차원 리스트를 모두 오름차순으로 정렬을 하여 세로 요소를 순차적으로 그 다음 가로 요소를 순차적으로 한 쌍씩 빼내어 그 차이를 각각 나누어 저장한다. height_ls 와 width_ls 에 저장된 잘린..

공부하기/백준 2023.01.18

[Python] 백준 풀기 1302 - 베스트셀러

파이썬 백준 1302번 실버 4 https://www.acmicpc.net/problem/1302 1302번: 베스트셀러 첫째 줄에 오늘 하루 동안 팔린 책의 개수 N이 주어진다. 이 값은 1,000보다 작거나 같은 자연수이다. 둘째부터 N개의 줄에 책의 제목이 입력으로 들어온다. 책의 제목의 길이는 50보다 작거나 같고 www.acmicpc.net 문제 보기 분류: 자료 구조, 문자열, 정렬, 해시를 시용한 집학과 맵 문제 풀기 리스트에 책의 정보를 모두 입력받고 알파벳 순으로 정렬을 한다. 서로 인접한 리스트인 i-1, i 번째를 각각 비교하면서 동일한 책이면 카운트 +1 을 다른 책이면 카운트를 초기화한다. 카운트의 값이 지금까지 누적된 max_count 보다 커지면 새로이 베스트셀러 책으로 등록을..

공부하기/백준 2023.01.07

[Python] 백준 풀기 2822 - 점수 계산

파이썬 백준 2822번 실버 5 https://www.acmicpc.net/problem/2822 2822번: 점수 계산 8개 줄에 걸쳐서 각 문제에 대한 참가자의 점수가 주어진다. 점수는 0보다 크거나 같고, 150보다 작거나 같다. 모든 문제에 대한 점수는 서로 다르다. 입력으로 주어지는 순서대로 1번 문제, 2번 문 www.acmicpc.net 문제 보기 분류: 정렬 문제 풀기 입력되는 점수들을 score_ls 리스트 index 와 문제 번호가 일치하도록 입력 받는다. 점수 리스트를 내림차순으로 정렬을 하고 가장 큰 앞쪽 5 개만 남겨두고 나머지를 제거한다. 입력 리스트 score_ls 의 원소를 문제 번호에 맞게 순차적으로 빼내어 5 개로 정렬된 리스트의 원소에 있는지 없는지를 판별하여 있다면 그..

공부하기/백준 2023.01.03

[Python] 백준 풀기 1431 - 시리얼 번호

파이썬 백준 1431번 실버 3 https://www.acmicpc.net/problem/1431 1431번: 시리얼 번호 첫째 줄에 기타의 개수 N이 주어진다. N은 50보다 작거나 같다. 둘째 줄부터 N개의 줄에 시리얼 번호가 하나씩 주어진다. 시리얼 번호의 길이는 최대 50이고, 알파벳 대문자 또는 숫자로만 이루어 www.acmicpc.net 문제 보기 분류: 정렬 문제 풀기 가장 바깥 리스트를 시리얼 번호 최대 길이인 50+1 로 지정하고 기타의 시리얼 번호를 입력받을 때마다 각 index 에 맞게 누적하여 저장한다. 저장하기 전에 함수 fnSumOfNum(serial) 에 넣어 숫자만 판별하여 그 수를 모두 더하고 sNum_serial 에 첫 번째에 그 합을 두 번째에 시리얼 번호를 모은다. 예..

공부하기/백준 2023.01.01

[Python] 백준 풀기 11728 - 배열 합치기

파이썬 백준 11728번 실버 5 https://www.acmicpc.net/problem/11728 11728번: 배열 합치기 첫째 줄에 배열 A의 크기 N, 배열 B의 크기 M이 주어진다. (1 ≤ N, M ≤ 1,000,000) 둘째 줄에는 배열 A의 내용이, 셋째 줄에는 배열 B의 내용이 주어진다. 배열에 들어있는 수는 절댓값이 109보다 작거 www.acmicpc.net 문제 보기 분류: 정렬, 두 포인터 문제 풀기 올해 2022년 마지막 날에 푸는 마지막 백준 문제이다. 시간복잡도를 주의해야 할 것 같다. 각각의 배열의 최대 크기는 1_000_000 까지 주어지기에 extend() 함수를 이용하면 뒤에 붙여질 배열의 최대 크기인 1_000_000 까지 시간복잡도가 발생한다. O(len(othe..

공부하기/백준 2022.12.31

[Python] 백준 풀기 5635 - 생일

파이썬 백준 5635번 실버 5 https://www.acmicpc.net/problem/5635 5635번: 생일 어떤 반에 있는 학생들의 생일이 주어졌을 때, 가장 나이가 적은 사람과 가장 많은 사람을 구하는 프로그램을 작성하시오. www.acmicpc.net 문제 보기 분류: 구현, 문자열, 정렬 문제 풀기 분할되어있는 일, 월, 년 숫자를 공백없이 년월일(20221227) 8자리 숫자로 붙이고 이름과 함께 리스트에 저장한다. 문자형 숫자로 된 생일을 정렬하여 가장 나이가 많은 사람, 가장 나이가 적은 사람을 출력한다. 코드 보기 import sys inputdata = sys.stdin.readline def fnRearrange(): restdt_info = [] if len(stdt_info[..

공부하기/백준 2022.12.27

[Python] 백준 풀기 5800 - 성적 통계

파이썬 백준 5800번 실버 5 https://www.acmicpc.net/problem/5800 5800번: 성적 통계 첫째 줄에 중덕 고등학교에 있는 반의 수 K (1 ≤ K ≤ 100)가 주어진다. 다음 K개 줄에는 각 반의 학생수 N (2 ≤ N ≤ 50)과 각 학생의 수학 성적이 주어진다. 시험 성적은 0보다 크거나 같고, 100보다 www.acmicpc.net 문제 보기 분류: 구현, 정렬 문제 풀기 두번째 줄부터 학생수와 점수를 같이 입력을 받기 때문에 deque() 를 이용하여 제일 왼쪽 학생수를 제거한다. deque() 를 정렬하기 위해 list() 함수를 이용하여 변환하고 sort(reverse = True) 를 이용하여 내림차순 정렬을 한다. 내림차순 정렬으로 Max 와 Min 의 값..

공부하기/백준 2022.12.25

[Java] array 값 정렬하기 w/o Arrays.sort()

조건이 만족하지 않을 때까지 swap array 안의 value 들이 서로 인접해 있는 value 와 서로 크기 비교를 한다. 이 과정은 for loop 으로 이루어지고 그 외부를 감싸는 while loop 를 멈추지 않게 한다. 만약 모든 정렬이 완료되어 더 이상 크기 비교 조건을 만족하지 않으면 그 회 while loop 는 false 값을 유지하여 종료가 된다. import java.util.Arrays; public class Main { public static void main(String[] args) { int[] array = {12, 56, 34, 89, 23, 67, 73}; int[] sorted = sortIntegers(array); System.out.println(Arrays..

알아가기/Java 2022.12.24

[Python] 백준 풀기 11656 - 접미사 배열

파이썬 백준 11656번 실버 4 https://www.acmicpc.net/problem/11656 11656번: 접미사 배열 첫째 줄에 문자열 S가 주어진다. S는 알파벳 소문자로만 이루어져 있고, 길이는 1,000보다 작거나 같다. www.acmicpc.net 문제 보기 분류: 문자열, 정렬 문제 풀기 생성된 접미사를 저장할 리스트 s_ls 생성하고 첫 문자 s 를 저장한다. s 의 문자 길이 - 1 만큼 for loop 을 실행하고, 이때 문자의 맨 앞자리를 하나씩 제거하고 이를 리스트에 누적 시킨다. 사전순으로 정렬하기 위해 sort() 함수를 이용하여 정렬을 한 후, 순서대로 출력한다. 코드 보기 import sys inputdata = sys.stdin.readline def fnSuffix..

공부하기/백준 2022.12.20