본문 바로가기

java32

(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.
백준 11659 구간 합 구하기 4(JAVA) - DP(Dynamic Programming) 백준 11659번 https://www.acmicpc.net/problem/11659 11659번: 구간 합 구하기 4 첫째 줄에 수의 개수 N과 합을 구해야 하는 횟수 M이 주어진다. 둘째 줄에는 N개의 수가 주어진다. 수는 1,000보다 작거나 같은 자연수이다. 셋째 줄부터 M개의 줄에는 합을 구해야 하는 구간 i와 j www.acmicpc.net 문제설명 첫째 줄에 N(숫자의 개수)과 M(반복할 횟수) 를 입력받아 진행 접근 처음엔 for문으로 풀어볼까 생각했지만 범위가 각 10만까지라 1초가 넘어 갈것같아 DP로 접근 각 구간까지의 합을 DP 배열에 저장해두고 i,j(구간의 시작과 끝) 을 입력받은 다음 dp[j]에서 dp[i-1]을 빼주면 된다. (dp[0]은 0을 넣어줌.) ex) 5 4 3 .. 2023. 4. 1.
백준 7562 나이트의 이동(JAVA) - BFS 백준 7562번 https://www.acmicpc.net/problem/7562 7562번: 나이트의 이동 체스판 위에 한 나이트가 놓여져 있다. 나이트가 한 번에 이동할 수 있는 칸은 아래 그림에 나와있다. 나이트가 이동하려고 하는 칸이 주어진다. 나이트는 몇 번 움직이면 이 칸으로 이동할 수 www.acmicpc.net 문제설명 체스판에서 나이트 (위의 그림처럼 대각선으로 이동가능함)가 몇번만에 이동가능한지 알아내는 문제 체스판의 변의 길이가 주어지고, 초기위치와 도착위치를 입력받는다. 접근 BFS로 접근 ( 기본이 상하좌우 라면 이 문제는 좌표를 각각 대각선에 맞춰 설정) 코드 import java.io.BufferedReader; import java.io.IOException; import j.. 2023. 3. 25.