정렬 47

[Java] 백준 풀기 3273 - 두 수의 합

자바 백준 3273번 실버 3 https://www.acmicpc.net/problem/3273 3273번: 두 수의 합 n개의 서로 다른 양의 정수 a1, a2, ..., an으로 이루어진 수열이 있다. ai의 값은 1보다 크거나 같고, 1000000보다 작거나 같은 자연수이다. 자연수 x가 주어졌을 때, ai + aj = x (1 ≤ i < j ≤ n)을 만족하는 www.acmicpc.net 문제 보기 분류: 정렬, 투 포인터 문제 풀기 입력된 숫자 수열을 오름차순 정렬을 하고 첫번째 index와 마지막 index를 시작으로 two-pointer technique을 사용하여 두 수의 합을 확인한다. 두 수의 합이 주어진 x와 같으면, 카운트를 늘리고 array의 다음 안쪽 두 수를 확인한다. 만약 두..

공부하기/백준 2023.08.11

[Java] 백준 풀기 1485 - 정사각형

자바 백준 1485번 실버 3 https://www.acmicpc.net/problem/1485 1485번: 정사각형 첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 네 줄로 이루어져 있으며, 점의 좌표가 한 줄에 하나씩 주어진다. 점의 좌표는 -100,000보다 크거나 같고, 100,000보다 작거나 같 www.acmicpc.net 문제 보기 분류: 정렬, 기하학 문제 풀기 네 개의 점을 입력받고 두 점사이의 거리를 모두 계산하여 네 변과 두 대각선의 길이를 각각 비교하여 정사각형을 판단한다. 네 개의 좌표를 통해 총 6가지의 두 점 사이의 거리를 찾을 수 있다. 이 결과를 오름차순 정렬하여 짧은 4개가 같고 긴 2개가 같으면 정사각형 조건임을 이용한다. 코드 보기 import ja..

공부하기/백준 2023.07.22

[Java] 백준 풀기 11652 - 카드

자바 백준 11652번 실버 4 https://www.acmicpc.net/problem/11652 11652번: 카드 준규는 숫자 카드 N장을 가지고 있다. 숫자 카드에는 정수가 하나 적혀있는데, 적혀있는 수는 -262보다 크거나 같고, 262보다 작거나 같다. 준규가 가지고 있는 카드가 주어졌을 때, 가장 많이 가지 www.acmicpc.net 문제 보기 분류: 자료 구조, 정렬, 해시를 사용한 집합과 맵 문제 풀기 입력 받은 데이터의 빈도수를 기록하기 위해서 HashMap을 이용한다. key는 입력으로 들어오는 숫자이고, value는 입력된 숫자의 횟수이다. main과 findMostFrequentNumber으로 메서드를 분리하였고 따라서 입력값을 ArrayList에 따로 저장하여 넘겨준다. Has..

공부하기/백준 2023.07.20

[Java] 백준 풀기 11536 - 줄 세우기

자바 백준 11536번 실버 5 https://www.acmicpc.net/problem/11536 11536번: 줄 세우기 이름이 증가하는 순으로 나타나면 INCREASING, 감소하는 순이면 DECREASING을 한 줄에 출력한다. 만약 위의 두 경우가 아니라면 NEITHER를 출력한다. www.acmicpc.net 문제 보기 분류: 구현, 문자열, 정렬 문제 풀기 입력받은 문자들을 compareTo() 메서드를 사용하여 정렬 순서를 확인할 수 있다. 모든 이름을 배열에 입력받고, 오름차순과 내림차순의 상태를 지정할 초기값을 설정한 후 현재 이름과 이전 이름의 순서에 따라 초기값 변경이 이루어지는 결과에 따라 "INCREASING", "DECREASING", "NEITHER"을 판별한다. compar..

공부하기/백준 2023.07.14

[Java] 백준 풀기 25305 - 커트라인

자바 백준 25305번 브론즈 2 https://www.acmicpc.net/problem/25305 25305번: 커트라인 시험 응시자들 가운데 1등은 100점, 2등은 98점, 3등은 93점이다. 2등까지 상을 받으므로 커트라인은 98점이다. www.acmicpc.net 문제 보기 분류: 구현, 정렬 문제 풀기 주어진 숫자만큼 for loop 을 돌려 하나씩 ArrayList 에 입력한다. 모든 ArrayList 에 입력이 끝나면 Collections.reverseOrder() 를 사용하여 내림차순 정렬을 시킨다. 내림차순 정렬된 ArrayList 에서 index 가 k-1 인 값을 뽑아 출력한다. 코드 보기 import java.util.Scanner; import java.util.List; im..

공부하기/백준 2023.06.02

[Java] 백준 풀기 20291 - 파일 정리

자바 백준 20291번 실버 3 https://www.acmicpc.net/problem/20291 20291번: 파일 정리 친구로부터 노트북을 중고로 산 스브러스는 노트북을 켜자마자 경악할 수밖에 없었다. 바탕화면에 온갖 파일들이 정리도 안 된 채 가득했기 때문이다. 그리고 화면의 구석에서 친구의 메시지를 www.acmicpc.net 문제 보기 분류: 자료 구조, 문자열, 정렬, 해시를 사용한 집학과 맵, 파싱 문제 풀기 Array 를 사용할 수 있지만 ArrayList 를 사용해 보고 싶어서 방향을 이쪽으로 잡았다. 해시맵을 사용하지 않아 조건문이 지저분한 경향이 있는데 이번엔 머리에서 떠오르는 대로 답안을 제출하고 해시맵 사용은 다음으로 넘긴다. n 개 만큼 파일 이름을 입력 받으면서 확장자만 분리..

공부하기/백준 2023.05.26

[Python] 백준 풀기 10867 - 중복 빼고 정렬하기

파이썬 백준 10867번 실버 5 https://www.acmicpc.net/problem/10867 10867번: 중복 빼고 정렬하기 첫째 줄에 수의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째에는 숫자가 주어진다. 이 수는 절댓값이 1,000보다 작거나 같은 정수이다. www.acmicpc.net 문제 보기 분류: 정렬 문제 풀기 입력 받은 숫자들을 set() 을 이용하여 중복을 제거한다. 중복 숫자가 제거된 set 형식을 오름차순 정렬을 위해 list() 를 사용하여 list 형식으로 변환한다. sort() 메서드를 사용하여 오름차순 정렬을 하고 출력한다. 코드 보기 import sys inputdata = sys.stdin.readline def fnSortAscending(): s..

공부하기/백준 2023.02.25

[Python] 백준 풀기 16435 - 스네이크버드

파이썬 백준 16435번 실버 5 https://www.acmicpc.net/problem/16435 16435번: 스네이크버드 첫 번째 줄에 과일의 개수 N (1 ≤ N ≤ 1,000) 과 스네이크버드의 초기 길이 정수 L (1 ≤ L ≤ 10,000) 이 주어집니다. 두 번째 줄에는 정수 h1, h2, ..., hN (1 ≤ hi ≤ 10,000) 이 주어집니다. www.acmicpc.net 문제 보기 분류: 그리디 알고리즘, 정렬 문제 풀기 과일을 높이 순으로 오름차순 정렬하여 제일 낮은 과일과 스네이크버드의 길이를 비교한다. 이때, 과일의 높이가 스네이크버드의 길이 보다 작거나 같은면 +1 을 해주고 다음 과일의 높이와 비교한다. 이 반복 작업을 하다가 과일의 높이가 지속적으로 길어진 스네이크버드..

공부하기/백준 2023.02.24

[Python] 백준 풀기 9076 - 점수 집계

파이썬 백준 9076번 브론즈 2 https://www.acmicpc.net/problem/9076 9076번: 점수 집계 입력의 첫 줄에는 테스트 케이스의 개수 T(1 ≤ T ≤ 10)가 주어진다. 각 테스트 케이스는 한 줄에 다섯 심판이 준 점수 다섯 개의 정수 Ni(1 ≤ Ni ≤ 10, i = 1, 2, ..., 5)가 하나의 공백을 사이에 두고 www.acmicpc.net 문제 보기 분류: 구현, 정렬 문제 풀기 리스트에 5 개의 수를 입력 받고 정렬한다. 오름차순 정렬된 리스트에서 if (score_ls[3] - score_ls[1] >= 4): 인지 판단하여 "KIN" 을 출력하거나, 그렇지 않은 경우 score_ls[3] + score_ls[2] + score_ls[1] 의 결과를 출력한다..

공부하기/백준 2023.02.19

[Java] 백준 풀기 2752 - 세 수 정렬

자바 백준 2752번 브론즈 4 https://www.acmicpc.net/problem/2752 2752번: 세수정렬 숫자 세 개가 주어진다. 이 숫자는 1보다 크거나 같고, 1,000,000보다 작거나 같다. 이 숫자는 모두 다르다. www.acmicpc.net 문제 보기 분류: 구현, 정렬 문제 풀기 잊어버리지 않기 위해 sort() 메서드를 사용하여 풀이를 한다. 3 개의 수가 저장될 array 를 만들고 for loop 으로 입력한다. 세 개의 숫자가 입력된 정렬되어지지 않은 array 를 Arrays.sort() 사용하여 정렬하고 출력한다. 코드 보기 import java.util.Scanner; import java.util.Arrays; public class Main { public st..

공부하기/백준 2023.02.02