자료 구조 13

[Java] 백준 풀기 2910 - 빈도 정렬

자바 백준 2910번 실버 3 https://www.acmicpc.net/problem/2910 2910번: 빈도 정렬 첫째 줄에 메시지의 길이 N과 C가 주어진다. (1 ≤ N ≤ 1,000, 1 ≤ C ≤ 1,000,000,000) 둘째 줄에 메시지 수열이 주어진다. www.acmicpc.net 문제 보기 분류: 자료 구조, 정렬, 해시를 사용한 집합과 맵 코드 보기 import java.util.Scanner; import java.util.List; import java.util.ArrayList; import java.util.Map; import java.util.HashMap; import java.util.Collections; import java.util.Comparator; // 숫자..

공부하기/백준 2023.11.24

[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] 백준 풀기 9933 - 민균이의 비밀번호

자바 백준 9933번 브론즈 1 https://www.acmicpc.net/problem/9933 9933번: 민균이의 비밀번호 첫째 줄에 단어의 수 N (2 ≤ N ≤ 100)이 주어진다. 다음 N개 줄에는 파일에 적혀있는 단어가 한 줄에 하나씩 주어진다. 단어는 알파벳 소문자로만 이루어져 있으며, 길이는 2보다 크고 14보다 작은 www.acmicpc.net 문제 보기 분류: 구현, 자료 구조, 문자열, 해시를 사용한 집합과 맵 코드 보기 import java.util.Scanner; import java.util.ArrayList; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.i..

공부하기/백준 2023.09.25

[Java] 백준 풀기 17219 - 비밀번호 찾기

자바 백준 17219번 실버 4 https://www.acmicpc.net/problem/17219 17219번: 비밀번호 찾기 첫째 줄에 저장된 사이트 주소의 수 N(1 ≤ N ≤ 100,000)과 비밀번호를 찾으려는 사이트 주소의 수 M(1 ≤ M ≤ 100,000)이 주어진다. 두번째 줄부터 N개의 줄에 걸쳐 각 줄에 사이트 주소와 비밀번 www.acmicpc.net 문제 보기 분류: 자료 구조, 해시를 사용한 집합과 맵 문제 풀기 문제에서 힌트로 주어진 BufferedReader와 BufferedWriter를 사용하여 입력과 출력을 한다. 해시맵을 이용하여 사이트 주소와 비밀번호를 입력받고 get() 메서드를 이용하여 출력해야할 사이트의 비밀번호를 가져온 후 출력한다. 코드 보기 import ja..

공부하기/백준 2023.09.21

[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] 백준 풀기 1927 - 최소 힙

자바 백준 1927번 실버 2 https://www.acmicpc.net/problem/1927 1927번: 최소 힙 첫째 줄에 연산의 개수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 자연수라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0 www.acmicpc.net 문제 보기 분류: 자료 구조, 우선순위 큐 문제 풀기 메서드 분리를 위해 명령을 모두 배열에 저장한다. 우선순위 큐를 기본 옵션으로 생성하여 낮은 숫자가 부여되도록한다. 명령어를 하나씩 빼내어 0 또는 그 외의 자연수에 대한 조건문을 실행한다. 0 일 경우 배열이 비어있는지 확인하고 비었다면 0 을 출력, 그렇지 않으면 poll() 을 통해 가장 ..

공부하기/백준 2023.06.11

[Java] 백준 풀기 17413 - 단어 뒤집기 2

자바 백준 17413번 실버 3 https://www.acmicpc.net/problem/17413 17413번: 단어 뒤집기 2 문자열 S가 주어졌을 때, 이 문자열에서 단어만 뒤집으려고 한다. 먼저, 문자열 S는 아래와과 같은 규칙을 지킨다. 알파벳 소문자('a'-'z'), 숫자('0'-'9'), 공백(' '), 특수 문자('')로만 이루어져 www.acmicpc.net 문제 보기 분류: 구현, 자료 구조, 문자열, 스택 문제 풀기 StringBuilder 를 이용하여 순서 그대로 유지해야할 의 묶음과 순서를 뒤집어야할 묶음을 저장할 변수를 지정한다. 넓은 범위에서 분기는 유무인 Tag 의 상태로 지정한다. "" 는 inTag 로 지정하여 시작 "" 가 나타나면 inTag 를 False ..

공부하기/백준 2023.06.09

[Java] 백준 풀기 11478 - 서로 다른 부분 문자열의 개수

자바 백준 11478번 실버 3 https://www.acmicpc.net/problem/11478 11478번: 서로 다른 부분 문자열의 개수 첫째 줄에 문자열 S가 주어진다. S는 알파벳 소문자로만 이루어져 있고, 길이는 1,000 이하이다. www.acmicpc.net 문제 보기 분류: 자료 구조, 문자열, 해시를 사용한 집학과 맵, 트리를 사용한 집합과 맵 문제 풀기 입력 받은 문자의 길이를 length() 로 확인하여 저장한다. 서로 다른 부분 문자열을 저장할 HashSet 을 생성한다. 이중 for loop 을 통해 문자열의 처음과 끝을 지정하여 substring() 으로 모든 경우에 대해 분리한다. 이 분리한 문자열을 HashSet() 으로 생성한 mySet 에 추가한다. HashSet 특성..

공부하기/백준 2023.05.27

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

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

공부하기/백준 2023.05.26

[Python] 백준 풀기 2605 - 줄 세우기

파이썬 백준 2605번 브론즈 2 https://www.acmicpc.net/problem/2605 2605번: 줄 세우기 점심시간이 되면 반 학생 모두가 한 줄로 줄을 서서 급식을 탄다. 그런데 매일 같이 앞자리에 앉은 학생들이 앞에 줄을 서 먼저 점심을 먹고, 뒷자리에 앉은 학생들은 뒤에 줄을 서 늦게 점심을 www.acmicpc.net 문제 보기 분류: 구현, 자료 구조 문제 풀기 학생 번호와 뽑은 번호표와의 관계를 통해 줄 선 순서를 확인해 보면, (학생 번호 - 번호표) 가 그 순서 위치임을 알 수 있다. 이 관계를 통해 해당 위치에 학생을 중간에 넣기 위해서 list, insert() 를 사용한다. index 를 학생의 번호와 맞추기 위해 index 0 에 0 을 초기화하여 리스트 studen..

공부하기/백준 2023.01.29