본문 바로가기

Problem Solving/Baekjoon1333

[백준] 9322 철벽 보안 알고리즘 - Data Structure / Java • 문제 링크 9322번: 철벽 보안 알고리즘 소희는 공개키와 개인키 한 쌍으로 보안을 유지하는 것이 매우 불편하다고 생각했다. 그래서 소희는 공개키만을 이용하는 암호화 체계를 개발했다. 이를 "철벽 보안 알고리즘"이라고 부르기로 www.acmicpc.net • 풀이 과정 제 1 공개키의 각 단어의 순서를 map에 저장한다. 제 2 공개키를 입력받을 때, 각 단어의 제 1 공개키 단어와 대응되는 순서 값을 배열에 저장한다. 다음 평문을 입력받을 때, 배열에 저장된 단어 배치 순서를 역으로 참조해, 각각의 단어를 정답 배열에 저장 및 공백으로 구분해 출력한다. • 풀이 코드 import java.io.BufferedReader; import java.io.BufferedWriter; import java... 2023. 3. 20.
[백준] 4158 CD - Data Structure / Java • 문제 링크 4158번: CD 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스의 첫째 줄에는 상근이가 가지고 있는 CD의 수 N, 선영이가 가지고 있는 CD의 수 M이 주어진다. N과 M은 최대 백만이다. 다음 줄 www.acmicpc.net • 풀이 과정 • 풀이 코드 import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.util.HashSet; import java.util.Set; import java.util.StringToke.. 2023. 3. 19.
[백준] 10546 배부른 마라토너 - Data Structure / Java • 문제 링크 10546번: 배부른 마라토너 마라토너라면 국적과 나이를 불문하고 누구나 참가하고 싶어하는 백준 마라톤 대회가 열린다. 42.195km를 달리는 이 마라톤은 모두가 참가하고 싶어했던 만큼 매년 모두가 완주해왔다. 단, 한 명 www.acmicpc.net • 풀이 과정 참가자 중 동명이인이 있을 수 있다는 조건에 의해 set이 아닌 map을 활용한다. 각 참가자의 이름을 key로 map에 저장하되, 동명이인이라면 value를 증가시켜 처리한다. 완주자의 이름을 입력받고 해당 완주자가 map에 존재한다면 해당 value를 감소시키고, 만약 value가 0이라면 해당 이름의 참가자는 모두 완주를 했으므로 map에서 제거한다. 위의 과정을 거쳐 map에 잔존하는 1개의 이름을 정답으로써 출력한다... 2023. 3. 18.
[백준] 1235 학생 번호 - Data Structure / Java • 문제 링크 1235번: 학생 번호 첫째 줄에는 학생의 수 N(2≤N≤1,000)이 주어진다. 둘째 줄부터 N개의 줄에 걸쳐 각 학생의 학생 번호가 순서대로 주어진다. 모든 학생들의 학생 번호는 서로 다르지만 그 길이는 모두 같으며, 0부 www.acmicpc.net • 풀이 과정 각 학생의 번호를 뒤에서 1자리 범위로 잘라내어 set에 담는다. 만약 set 에 현재 잘라낸 번호가 존재하지 않는다면 set에 담고, 중복되는 번호가 있다면 반복문을 다시 수행하며 잘라낼 범위를 1 증가시킨다. 위의 과정을 거쳐 중복되는 번호없이 입력받은 번호를 모두 set에 담는다면 현재 잘라낸 범위 k를 출력한다. • 풀이 코드 import java.io.BufferedReader; import java.io.Buffe.. 2023. 3. 17.
[백준] 17608 막대기 - Data Structure / Java • 문제 링크 17608번: 막대기 아래 그림처럼 높이만 다르고 (같은 높이의 막대기가 있을 수 있음) 모양이 같은 막대기를 일렬로 세운 후, 왼쪽부터 차례로 번호를 붙인다. 각 막대기의 높이는 그림에서 보인 것처럼 순서대로 www.acmicpc.net • 풀이 과정 stack에 각 막대기의 높이를 push하고 모두 pop한다. peek하여 최대 높이가 이후 꺼낼 높이보다 높다면 cnt++를 수행하고, 높이는 최대값으로 갱신해 오른쪽에서 현재 최대 높이보다 낮은 막대기는 볼 수 없는 조건을 만족시킨다. • 풀이 코드 import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.I.. 2023. 3. 16.
[백준] 12605 단어순서 뒤집기 - Data Structure / Java • 문제 링크 12605번: 단어순서 뒤집기 스페이스로 띄어쓰기 된 단어들의 리스트가 주어질때, 단어들을 반대 순서로 뒤집어라. 각 라인은 w개의 영단어로 이루어져 있으며, 총 L개의 알파벳을 가진다. 각 행은 알파벳과 스페이스로만 www.acmicpc.net • 풀이 과정 각 테스트케이스의 단어를 공백을 기준으로 분리하여 stack에 push하고, 넣은 모든 요소를 pop하여 stack의 LIFO 구조에 의해 각 단어의 순서가 뒤집어 출력된다. • 풀이 코드 import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.. 2023. 3. 15.