목록Java (371)
기록방
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/b1x5i0/btsb1Q5Txvc/1hvmdyUcjYx7VVyaHBPKvK/img.png)
👉 문제링크 2252번: 줄 세우기 첫째 줄에 N(1 ≤ N ≤ 32,000), M(1 ≤ M ≤ 100,000)이 주어진다. M은 키를 비교한 회수이다. 다음 M개의 줄에는 키를 비교한 두 학생의 번호 A, B가 주어진다. 이는 학생 A가 학생 B의 앞에 서야 한다는 의 www.acmicpc.net 🔸 문제 분석 🔸 N명의 학생들을 키 순서대로 줄을 세운다. 모두의 키 정보가 주어지는 것이 아니라, 두 학생을 비교해서 누가 앞에 오는지에 대한 정보만 주어진다. 위상 정렬 알고리즘에 대한 간단한 문제이다. 키가 큰 학생이 앞에 오는지, 작은 학생이 앞에 오는지에 대한 정보는 없고, 누가 앞으로 오느냐만 주어진다. 따라서 답이 여러가지가 될 수 있으므로 서브테스크 문제이다. BFS로 간단히 풀이할 수 있다..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/dAzkJX/btsboVIA8RH/FtnxIhz5V2ftRKRQKs2dk0/img.png)
👉 문제링크 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 🔸 문제 분석 🔸 문자열 s의 각 자리 문자들을 index만큼 뒤 알파벳으로 바꾼다. z가 넘으면 다시 a부터 미룬다. skip에 포함 된 문자는 세지 않는다. 결과를 출력한다 🔸 코드 🔸 class Solution { public String solution(String s, String skip, int index) { String answer = ""; for(int i = 0; i < s.length(); i++) { int now = s.charAt(i) - 'a'; for(int j =..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/buCtcI/btr8JkXhwoE/s6rOJQILw3mEFOZbpxcai1/img.png)
👉 문제링크 2110번: 공유기 설치 첫째 줄에 집의 개수 N (2 ≤ N ≤ 200,000)과 공유기의 개수 C (2 ≤ C ≤ N)이 하나 이상의 빈 칸을 사이에 두고 주어진다. 둘째 줄부터 N개의 줄에는 집의 좌표를 나타내는 xi (0 ≤ xi ≤ 1,000,000,000)가 www.acmicpc.net 🔸 문제 분석 🔸 N개의 수직선 위 집들의 좌표가 입력으로 주어진다. C개의 공유기를 설치하려는데, 가장 가까운 공유기의 거리를 최대로 하고자 한다. 공유기의 거리를 이분탐색과 같은 형태인 매개변수 탐색으로 찾아낸다. 🔸 코드 🔸 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; im..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cP2XCB/btr8H1c76Zp/8BLBiWcDyjKkWnnzEFuk4K/img.png)
👉 문제링크 1806번: 부분합 첫째 줄에 N (10 ≤ N < 100,000)과 S (0 < S ≤ 100,000,000)가 주어진다. 둘째 줄에는 수열이 주어진다. 수열의 각 원소는 공백으로 구분되어져 있으며, 10,000이하의 자연수이다. www.acmicpc.net 🔸 문제 분석 🔸 N자리의 수열 중 합이 S이상이 되는 수열 중 가장 짧은 것의 길이를 출력한다. N은 10,000 이하의 자연수이다. S는 0이상, 100,000,000(1억) 이하이다. 수열의 모든 수를 확인하긴 해야한다. 합이 S가 되는 것을 효율적이게 비교하기 위해서, 매번 전부 더하는 것이 아니라 하나씩 더하고 빼며 진행한다. 따라서 투포인터 알고리즘을 사용한다. 🔸 코드 🔸 import java.io.BufferedReade..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/brXSNm/btr8IxbK9fc/NwfnV9IGjY32uXruLkRd1K/img.png)
👉 문제링크 2589번: 보물섬 첫째 줄에는 보물 지도의 세로의 크기와 가로의 크기가 빈칸을 사이에 두고 주어진다. 이어 L과 W로 표시된 보물 지도가 아래의 예와 같이 주어지며, 각 문자 사이에는 빈 칸이 없다. 보물 지도의 www.acmicpc.net 🔸 문제 분석 🔸 육지는 상하좌우로 건널 수 있는 땅이다. 두 보물은 한 육지에 있으며, 최단 거리가 가장 긴 두 위치에 있다. bfs로 가장 멀리 퍼진곳을 찾으면, 최단 거리 중 가장 긴 거리이다. 두 보물 사이를 이동하는 시간을 출력한다. 🔸 코드 🔸 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Ar..