정렬 47

[Java] 백준 풀기 2204 - 도비의 난독증 테스트

자바 백준 2204번 브론즈 1 https://www.acmicpc.net/problem/2204 2204번: 도비의 난독증 테스트 꿍은 도비에게 영어단어들을 제시한 후 어떤 단어가 대소문자를 구분하지 않고 사전순으로 가장 앞서는지 맞추면 양말을 주어 자유를 얻게해준다고 하였다. 하지만 인성이 좋지 않은 꿍은 사실 www.acmicpc.net 문제 보기 분류: 문자열, 정렬 코드 보기 import java.util.Scanner; import java.util.List; import java.util.ArrayList; import java.util.Collections; // 단어 쌍을 비교하기 위한 WordPair 클래스 class WordPair implements Comparable { Strin..

공부하기/백준 2023.11.20

[Java] 백준 풀기 16499 - 동일한 단어 그룹화하기

자바 백준 16499번 실버 4 https://www.acmicpc.net/problem/16499 16499번: 동일한 단어 그룹화하기 첫째 줄에 단어의 개수 N이 주어진다. (2 ≤ N ≤ 100) 둘째 줄부터 N개의 줄에 단어가 한 줄에 하나씩 주어진다. 단어는 알파벳 소문자로만 이루어져 있고, 길이는 10을 넘지 않는다. www.acmicpc.net 문제 보기 분류: 자료 구조, 문자열, 정렬, 해시를 사용한 집합과 맵 코드 보기 import java.util.Scanner; import java.util.HashMap; import java.util.Arrays; public class Main { public static void main(String[] args) { Scanner sc = ..

공부하기/백준 2023.10.14

[Python] 백준 풀기 1764 - 듣보잡

파이썬 백준 1764번 실버 4 https://www.acmicpc.net/problem/1764 1764번: 듣보잡 첫째 줄에 듣도 못한 사람의 수 N, 보도 못한 사람의 수 M이 주어진다. 이어서 둘째 줄부터 N개의 줄에 걸쳐 듣도 못한 사람의 이름과, N+2째 줄부터 보도 못한 사람의 이름이 순서대로 주어진다. www.acmicpc.net 문제 보기 분류: 자료 구조, 문자열, 정렬, 해시를 사용한 집합과 맵 코드 보기 import sys # sys.stdin.readline을 사용하여 한 번에 여러 줄을 읽고 대용량 입력을 빠르게 처리 inputdata = sys.stdin.readline # 입력 데이터를 받아서 딕셔너리로 저장하는 함수 def recordInputData(number): tem..

공부하기/백준 2023.10.12

[Java] 백준 풀기 20920 - 영단어 암기는 괴로워

자바 백준 20920번 실버 3 https://www.acmicpc.net/problem/20920 20920번: 영단어 암기는 괴로워 첫째 줄에는 영어 지문에 나오는 단어의 개수 $N$과 외울 단어의 길이 기준이 되는 $M$이 공백으로 구분되어 주어진다. ($1 \leq N \leq 100\,000$, $1 \leq M \leq 10$) 둘째 줄부터 $N+1$번째 줄까지 외울 단 www.acmicpc.net 문제 보기 분류: 자료 구조, 문자열, 정렬, 해시를 사용한 집합과 맵, 트리를 사용한 집합과 맵 코드 보기 import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.InputStreamReader; import jav..

공부하기/백준 2023.09.26

[Java] 백준 풀기 11256 - 사탕

자바 백준 11256번 실버 5 https://www.acmicpc.net/problem/11256 11256번: 사탕 당신은 사탕 공장의 주인이다. 날마다, 당신은 J개의 사탕을 가게에 보내기 위해 상자에 포장해야 한다. 당신은 크기가 다른 상자 N개를 가지고 있다. 당신은 편리를 위해 상자를 최소한으로 쓰 www.acmicpc.net 문제 보기 분류: 그리디 알고리즘, 정렬 문제 풀기 상자의 가로 세로를 입력받아 크기를 구하여 List에 저장하고 List의 value를 오름차순 정렬한다. 정렬된 List의 마지막 value부터 가져와 전체 사탕의 개수에서 차감한다. 이 작업을 사탕의 개수가 0이 될 때까지 반복하여 그 횟수인 필요 상자의 최소 개수를 출력한다. 코드 보기 import java.util..

공부하기/백준 2023.09.12

[Java] 백준 풀기 5545 - 최고의 피자

자바 백준 5545번 실버 3 https://www.acmicpc.net/problem/5545 5545번: 최고의 피자 첫째 줄에 토핑의 종류의 수 N(1 ≤ N ≤ 100)이 주어진다. 둘째 줄에는 도우의 가격 A와 토핑의 가격 B가 주어진다. (1 ≤ A, B ≤ 1000) 셋째 줄에는 도우의 열량 C가 주어진다. (1 ≤ C ≤ 10000) 다음 줄 www.acmicpc.net 문제 보기 분류: 그리디 알고리즘, 정렬 문제 풀기 도우의 1원당 열량을 초기값으로 지정한다. 그 후 토핑을 오름차순 정렬하여 열량이 높은 것부터 하나씩 합하면서 단위 열량을 매번 구하면서 최대값을 업데이트 저장한다. 코드 보기 import java.util.Arrays; import java.util.Scanner; cl..

공부하기/백준 2023.08.28

[Java] 백준 풀기 13164 - 행복 유치원

자바 백준 13164번 골드 5 https://www.acmicpc.net/problem/13164 13164번: 행복 유치원 입력의 첫 줄에는 유치원에 있는 원생의 수를 나타내는 자연수 N(1 ≤ N ≤ 300,000)과 나누려고 하는 조의 개수를 나타내는 자연수 K(1 ≤ K ≤ N)가 공백으로 구분되어 주어진다. 다음 줄에는 원생들 www.acmicpc.net 문제 보기 분류: 정렬, 그리디 알고리즘 문제 풀기 최소 비용을 만들기 위해서 인접한 키 차이를 확인하고 그 크기가 큰 인원은 서로 분리시켜 각자의 그룹으로 만든다. 따라서 오름차순 정렬된 사람들에서 인접한 두 인원의 키차이를 구하고 이를 오름차순 정렬하여 가장 큰 차이값들부터 제거하는 형식(독자 그룹)으로 그룹을 지정한다. 그 그룹들의 키 ..

공부하기/백준 2023.08.26

[Java] 백준 풀기 1448 - 삼각형 만들기

자바 백준 1448번 실버 3 https://www.acmicpc.net/problem/1448 1448번: 삼각형 만들기 첫째 줄에 빨대의 개수 N이 주어진다. N은 3보다 크거나 같고, 1,000,000보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에 빨대의 길이가 한 줄에 하나씩 주어진다. 빨대의 길이는 1,000,000보다 www.acmicpc.net 문제 보기 분류: 수학, 그리디 알고리즘, 정렬 문제 풀기 입력된 빨대를 array에 모두 저장 후 오름차순 정렬한다. 정렬된 빨대의 길이를 마지막 index부터 시작하여 세 개씩 묶어 삼각형 생성 조건이 되는지 확인한다. 두 변의 길이의 합이 가장 긴 변의 길이보다 길다면 삼각형이 형성이 되고, 변의 길이가 가장 긴 마지막 index부터 조사..

공부하기/백준 2023.08.21

[Java] 백준 풀기 11508 - 2+1 세일

자바 백준 11508번 실버 4 https://www.acmicpc.net/problem/11508 11508번: 2+1 세일 KSG 편의점에서는 과일우유, 드링킹요구르트 등의 유제품을 '2+1 세일'하는 행사를 하고 있습니다. KSG 편의점에서 유제품 3개를 한 번에 산다면 그중에서 가장 싼 것은 무료로 지불하고 나머지 두 www.acmicpc.net 문제 보기 분류: 정렬, 그리디 알고리즘 문제 풀기 세 개씩 묶었을때 가장 작은 가격을 제외하고 지불하는 규칙에서 전체 최소 비용을 구하기 위해서는 가격을 정렬하여 제외시킨다. 가격이 정렬된 상태에서 세 개씩 묶을 수 있으면 그 중 가장 작은 가격을 제외하고 누적 합한다. 세 개씩 묶여지지 않은 나머지 가격인 두 개 또는 한 개의 가격은 그대로 합한다. ..

공부하기/백준 2023.08.15

[Java] 백준 풀기 10610 - 30

자바 백준 10610번 실버 4 https://www.acmicpc.net/problem/10610 10610번: 30 어느 날, 미르코는 우연히 길거리에서 양수 N을 보았다. 미르코는 30이란 수를 존경하기 때문에, 그는 길거리에서 찾은 수에 포함된 숫자들을 섞어 30의 배수가 되는 가장 큰 수를 만들고 싶어한 www.acmicpc.net 문제 보기 분류: 수학, 그리디 알고리즘, 문자열, 정렬, 정수론 문제 풀기 30의 배수가 가능한지 알아보기 위해서 주어진 숫자의 각 자리를 모두 합한 값이 3의 배수가 되는지 확인하고 0이 하나라도 존재하는지 확인한다. String 타입으로 입력 받은 숫자를 charAt() - '0' 방법을 이용하여 int 타입의 숫자로 변경한다. 0부터 9까지 각 숫자의 개수를 ..

공부하기/백준 2023.08.14