분류 전체보기 116

[백준] 10808번 알파벳 개수

https://www.acmicpc.net/problem/10808 10808번: 알파벳 개수 단어에 포함되어 있는 a의 개수, b의 개수, …, z의 개수를 공백으로 구분해서 출력한다. www.acmicpc.net import java.util.Scanner; public class Main{ public static void main(String[] args) { Scanner sc = new Scanner(System.in); String s = sc.next(); int[] arr = new int[26]; for (int i = 0; i < s.length(); i++) { arr[s.charAt(i)-97]++; } for (int i = 0; i < 26; i++) { System.out.p..

[백준] 2902번 KMP는 왜 KMP일까?

https://www.acmicpc.net/problem/2902 2902번: KMP는 왜 KMP일까? 문제 KMP 알고리즘이 KMP인 이유는 이를 만든 사람의 성이 Knuth, Morris, Prett이기 때문이다. 이렇게 알고리즘에는 발견한 사람의 성을 따서 이름을 붙이는 경우가 많다. 또 다른 예로, 유명한 비대칭 www.acmicpc.net import java.util.Scanner; public class Main{ public static void main(String[] args) { Scanner sc = new Scanner(System.in); String s = sc.next(); for (int i = 0; i < s.split("-").length; i++) { String ss..

[백준] 2589번 보물섬

https://www.acmicpc.net/problem/2589 2589번: 보물섬 첫째 줄에는 보물 지도의 세로의 크기와 가로의 크기가 빈칸을 사이에 두고 주어진다. 이어 L과 W로 표시된 보물 지도가 아래의 예와 같이 주어지며, 각 문자 사이에는 빈 칸이 없다. 보물 지도의 www.acmicpc.net 문제: 보물은 서로 간에 최단 거리로 이동하는데 있어 가장 긴 시간이 걸리는 육지 두 곳에 나뉘어 묻혀있다. 문제 풀이 : 최단 거리이기 때문에 BFS를 활용해서 풀었습니다. 사방 탐색을 하며 연결된 map을 갈 때마다 큐의 사이즈를 재어주어 count 를 늘려주었습니다. 이후 answer 변수를 주어 count 중 가장 큰 수를 출력해줍니다. 가장 긴 시간이 걸리는 것으로 답입니다. 몰랐던 점 : ..

[프로그래머스] 2019 KAKAO BLIND RECRUITMENT 오픈채팅방

https://programmers.co.kr/learn/courses/30/lessons/42888 코딩테스트 연습 - 오픈채팅방 오픈채팅방 카카오톡 오픈채팅방에서는 친구가 아닌 사람들과 대화를 할 수 있는데, 본래 닉네임이 아닌 가상의 닉네임을 사용하여 채팅방에 들어갈 수 있다. 신입사원인 김크루는 카카오톡 오 programmers.co.kr 문제풀이 : 채팅방 메시지는 순서대로 출력되게 하면서, 닉네임은 최종 변경된 닉네임으로 출력되게 합니다. HashMap을 이용하여 uid는 key로 닉네임은 value로 줍니다. record 배열을 띄어쓰기로 구분하여 잘라준 후 HashMap에 저장해 줍니다. 같은 uid(key)가 있을 경우 해쉬맵에는 최종 변경된 닉네임으로 저장됩니다. String은 equa..

[백준] 2309번 일곱난쟁이

https://www.acmicpc.net/problem/2309 2309번: 일곱 난쟁이 아홉 개의 줄에 걸쳐 난쟁이들의 키가 주어진다. 주어지는 키는 100을 넘지 않는 자연수이며, 아홉 난쟁이의 키는 모두 다르며, 가능한 정답이 여러 가지인 경우에는 아무거나 출력한다. www.acmicpc.net 문제 : 7명의 난쟁이 구하기 문제 풀이 : 브루트 포스 먼저 9명의 난쟁이의 합계를 구한 뒤, 두명씩 묶어서 합계에서 두명을 뺐을 때 100이 되면 그 두명의 값을 0으로 바꾸고, 정렬한 뒤 0이 아닌 7명의 난쟁이를 구해주었다. 몰랐던 점 : 7명을 선택하는 것보다 2명을 제외 시키는 것이 빨랐다. boolean 형을 잘 쓰자. import java.util.Arrays; import java.util..

[백준] 6603번 로또

https://www.acmicpc.net/problem/6603 6603번: 로또 문제 독일 로또는 {1, 2, ..., 49}에서 수 6개를 고른다. 로또 번호를 선택하는데 사용되는 가장 유명한 전략은 49가지 수 중 k(k>6)개의 수를 골라 집합 S를 만든 다음 그 수만 가지고 번호를 선택하는 www.acmicpc.net import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main{ static int k; static int[] S,ans; public static void main(String[] args) throws IOException { Buffere..

[백준] 2583번 영역 구하기

https://www.acmicpc.net/problem/2583 2583번: 영역 구하기 첫째 줄에 M과 N, 그리고 K가 빈칸을 사이에 두고 차례로 주어진다. M, N, K는 모두 100 이하의 자연수이다. 둘째 줄부터 K개의 줄에는 한 줄에 하나씩 직사각형의 왼쪽 아래 꼭짓점의 x, y좌표값과 오 www.acmicpc.net 문제 : 분리된 영역에서 각 영역의 넓이가 얼마인지 구하기 문제 풀이 : dfs활용 꼭지점의 좌표(0,0)을 왼쪽 위로 하고 , 오른쪽 아래 꼭지점의 좌표를 (M,N)으로 입력받아서 풀었습니다. count 변수는 영역의 넓이를 구해주고, answer 변수는 영역의 개수를 구해줍니다. import java.util.ArrayList; import java.util.Collecti..

[백준] 7568번 덩치

https://www.acmicpc.net/problem/7568 7568번: 덩치 우리는 사람의 덩치를 키와 몸무게, 이 두 개의 값으로 표현하여 그 등수를 매겨보려고 한다. 어떤 사람의 몸무게가 x kg이고 키가 y cm라면 이 사람의 덩치는 (x,y)로 표시된다. 두 사람 A 와 B의 덩� www.acmicpc.net 문제 : 두 사람 A 와 B의 덩치가 각각 (x,y), (p,q)라고 할 때 x>p 그리고 y>q 이라면 우리는 A의 덩치가 B의 덩치보다 "더 크다"고 말한다. 학생 N명의 몸무게와 키가 담긴 입력을 읽어서 각 사람의 덩치 등수를 계산하여 출력해야 한다. 문제 풀이 : 브루트 포스 자신 보다 큰 몸무게가 있는 사람이 있으면 키도 큰지 확인해줘서 등수를 세줍니다. import java..

[백준] 1389번 케빈 베이컨의 6단계 법칙

https://www.acmicpc.net/problem/1389 1389번: 케빈 베이컨의 6단계 법칙 첫째 줄에 유저의 수 N (2 ≤ N ≤ 100)과 친구 관계의 수 M (1 ≤ M ≤ 5,000)이 주어진다. 둘째 줄부터 M개의 줄에는 친구 관계가 주어진다. 친구 관계는 A와 B로 이루어져 있으며, A와 B가 친구라는 뜻�� www.acmicpc.net import java.util.LinkedList; import java.util.Queue; import java.util.Scanner; public class Main { static int N, M; static int[][] map; static boolean[] visited; static Queue queue; static int c..

[백준] 9372번 상근이의 여행

https://www.acmicpc.net/problem/9372 9372번: 상근이의 여행 문제 상근이는 겨울방학을 맞아 N개국을 여행하면서 자아를 찾기로 마음먹었다. 하지만 상근이는 새로운 비행기를 무서워하기 때문에, 최대한 적은 종류의 비행기를 타고 국가들을 이동하려� www.acmicpc.net 문제 : 가장 적은 종류의 비행기로 모든 국가를 여행한다. 풀이 : 국가는 정점, 비행기는 간선 인접 행렬로 나타내서 왕복할 수 있으면 연결된 그래프이므로 1로 연결하였습니다. bfs를 활용하여 큐에 들어간 횟수를 세어줬습니다. import java.util.Arrays; import java.util.LinkedList; import java.util.Queue; import java.util.Scann..