본문 바로가기

알고리즘26

(LEVEL 2)프로그래머스 - 달리기경주 (JAVA) 문제 입출력 예 문제설명 & 접근방법 1. 달리기 선수들(players) 이 등수에 따라 차례대로 주어지고 추월을 할때마다 추월한 선수의 이름이 불린다. ex) A, B, C가 있을 때 (차례대로 1,2,3등) B가불리면 B, A, C가 된다. 2. 선수이름별로 등수를 저장해두면 좋을거 같아서 HashMap으로 접근 풀이. 1. answer를 players의 길이만큼 초기화 2. 선수의 이름과 등수를 담을 HashMap을 선언 3. 등수 순서대로 주어지니 map에 등수를 담는다. (zero-indexed) 4. callings길이만큼 반복문을 돌며 4-1. 불린 선수의 이름을 통해 해당 등수를 저장해둔다. 4-2. 가져온 등수로 players 배열에 접근하여 해당 등수의 선수를 가지고온다. 4-3. 추월.. 2023. 4. 13.
(LEVEL 2)프로그래머스 - 오픈채팅방 (JAVA) 문제 입출력 예 풀이. 1. record의 길이만큼 for문을 돌면서 temp에 띄어쓰기 별로 나눈 문자열들을 임시 저장한다. 2. 길이가 3일때만 ID별로 닉네임을 갱신한다( HashMap사용, Leave일땐 길이가 2) 3.다시 for문을 돌며 temp에 임시로 uid를 저장하고 저장해두었던HashMap에서 id별로 닉네임을 가져온다. 4. Enter / Leave 일때만 answer에 추가한다. 5. 마지막으로 return 자료형이 String[]이므로 answer.toArray를 사용해 리턴해준다. -> ArrayList를 사용한 이유는 처음 answer의 크기를 초기화할 때 record의 길이와는 다를수있다. (Change가 들어가면 다름.) 그래서 가변적인 List를 활용해 저장한다음 retu.. 2023. 4. 10.
백준 10026 적록색약(JAVA) - BFS 백준 10026번 https://www.acmicpc.net/problem/10026 10026번: 적록색약 적록색약은 빨간색과 초록색의 차이를 거의 느끼지 못한다. 따라서, 적록색약인 사람이 보는 그림은 아닌 사람이 보는 그림과는 좀 다를 수 있다. 크기가 N×N인 그리드의 각 칸에 R(빨강), G(초록) www.acmicpc.net 문제설명 적록색약이 아닌사람(A) 적록색약인 사람(B)과 이 봤을때의 그림의 그룹의 개수를 나누는 문제 A는 R,G,B 각각의 그룹을 나눌수 있지만 B는 R,G가 같게 보인다는 가정. 접근 BFS로 접근 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader;.. 2023. 3. 25.
(LEVEL 1)프로그래머스 - 대충 만든 자판 (JAVA) 문제 입출력 예 풀이. 1. 각 알파벳들의 최소 인덱스가 저장될 HashMap 선언 2. answer를 targets의 길이만큼 초기화 ( 처음에 keymap의 크기만큼 초기화해서 런타임에러가 났다.) 3. keymap의 길이 만큼 반복문을 돌고 이중 포문으로 각 원소들의 길이만큼 돌며 각 알파벳들의 최소 인덱스를 저장. (값이 있다면 그냥 비교하면 되지만 알파벳 이 첫 등장이라면 map에서 가져올수가 없어 getOrDefault로 101을 넣어줬다. - 원소의 최대길이가 100이어서) 4. 각 최소 인덱스를 다 저장한후에 targets의 길이만큼 똑같이 반복문을 돌며 sum에다가 저장. ( 단, 알파벳에 대한 인덱스가 없는 경우 sum에 -1을 넣고 안쪽 for문을 break 5. 바깥쪽 for문이 반.. 2023. 3. 1.