목록java (31)
CodeClover

https://www.acmicpc.net/problem/14916📌 문제 탐색하기n원을 2원짜리와 5원짜리 동전으로 동전 개수를 최소로 거슬러주는 문제이다.거슬러 줄 수 없는 경우 -1을 출력해야한다. 📌 가능한 시간복잡도입력받은 n의 값이 홀수이거나 5이하로 나누어 떨어지는 수가 아니면 2원짜리 동전을 사용해서 n을 주여야함. 매번 반복문에서 n의 값이 2씩 감소하기때문에 최대 반복 횟수는 n/2이다. 큰 동전을 사용할 수 없는 경우 2원짜리 동전을 계속 사용해야함. 따라서 가능한 시간복잡도 O(N)이다. 📌 코드 설계하기그리디 알고리즘 적용큰 동전을 최대한 많이 사용하고 큰 동전 사용이 더 이상 불가능한 경우 2원 동전을 하나씩 추가하면서 가능한 조합을 찾는다.📌 정답 코드import jav..

https://www.acmicpc.net/problem/1260📌 문제 탐색하기DFS, BFS 문제로 ,,, 그래프 탐색 문제 입니다. 방문된 점을 출력하라고 했으니 순서가 중요한 문제입니다. 📌 가능한 시간복잡도가능한 시간복잡도는 입력받은 정점의 개수 N ,간선의 개수 M으로 ...정점과 간선을 한번씩 탐색해서 BFS , DFS 모두 동일하게 O(N+M) ,리스트에 간선 정보를 넣고 정렬해야하니까 O(M logM)따라서 가능한 시간복잡도는 모두 더한값 O(N+M) + O(M logM) 입니다. 📌 코드 설계하기그래프는 List> 으로 인접 리스트를 사용하고 DFS는 스택 ,BFS는 큐를 사용해서 구현하면 된다. 📌 정답 코드import java.io.*;import java.util.*;..

https://www.acmicpc.net/problem/10816📌 문제 탐색하기상근이가 가지고 있는 숫자카드의 개수 N , N개의 카드들 , 정수 M , M개의 카드들이 입력된 값에서 각각 입력된 M개의 정수들이 N개의 숫자카드에 있는 숫자만큼 출력하는 문제이다. https://www.acmicpc.net/problem/10815 이 문제의 응용버전... ! 📌 가능한 시간복잡도N개의 숫자 저장 하고 조회하는 과정에서 O(N) , O(M) 만큼의 시간복잡도 .... 따라서 가능한 시간복잡도는 O(N) + O(M) 입니다. 📌 코드 설계하기시간복잡도를 잘 생각해서 풀어야하는 문제이다. 조건에 보면 50만개의 숫자에 대해서 체크해야하는 문제이므로 단순한 반복으로 해결 가능 . 우선, 상근이가 가지..

https://www.acmicpc.net/problem/4158📌 문제 탐색하기이분탐색 문제 유형.두 배열에서 공통된 원소의 개수를 출력하는 문제이다. CD 번호들이 정렬된 상태로 들어오기때문에 이분탐색을 이용하면 효율적으로 풀 수 있다.📌 가능한 시간복잡도이분탐색을 이용한 효율적인 문제 풀이~선영이의 CD 한개당 O(log N) 으로 처리가 가능하기 때문에 입력받는 선영이의 CD 개수 M개 ... 전체 시간 복잡도는 O(log N * M ) 입니다. 📌 코드 설계하기상금이의 CD리스트를 중심으로 선영이의 CD번호를 하나씩 이분 탐색해서 상근이가 가지고 있는 체크하기📌 정답 코드import java.util.*;import java.io.*;public class Main { p..

https://www.acmicpc.net/problem/1244📌 문제 탐색하기구현문제 유형입력받은 스위치 개수에 맞춰서 0,1으로 스위치 꺼짐/켜짐 상태가 주어지고 각각 입력받은 학생의 성별/스위치 번호에 따라서 남학생은 입력받은 스위치 번호 + 스위치 번호 배수별로 스위치 상태 변경 가능.여학생은 입력받은 스위치 번호 + 앞뒤 대칭이 맞는다면 대칭이 맞는 범위까지 스위치 상태 변경 가능하다.최종적으로 학생들이 상태 변경 끝낸 뒤 스위치들의 상태를 출력하는 문제이다. 📌 코드 설계하기우선, N개의 스위치 개수 , N개의 스위치 상태 배열, 학생수, 학생 성별,스위치 번호 배열 입력 받기.if 조건문으로 남학생인 경우 : 남학생이 부여받은 스위치 번호 + ( 스위치번호 ) ,,, 반복해서 스위치 번..

https://www.acmicpc.net/problem/1251📌 문제 탐색하기입력한 단어에서 임의로 2개의 부분을 나눠서 3개의 덩어리로 만들어주고 -> 각각 3개의 단어를 뒤집고 -> 다시 뒤집은 단어들을 하나로 합친다.이때 단어가 주어지면, 이렇게 만들 수 있는 단어 중에서 사전순으로 가장 앞서는 단어를 출력하는 프로그램을 작성하시오.라는 조건에 맞추어 조합을 사용해야한다. ? 📌 가능한 시간복잡도일단, 문자열에서 두개의 자리르 ㄹ골라서 3개의 덩어리로 나눠야함. 이때 가능한 조합은 문자열의 길이 N일때, N^2이다.따라서 조합의 수 O(N^2) + 각각 나누어진 조각들을 reverse()함수를 활용해서 뒤집고 붙이는 과정이므로 O(N) 따라서, 가능한 시간복잡도는 O(N^2) + O(N)이다..

https://www.acmicpc.net/problem/4592📌 문제 탐색하기1-99까지 숫자를 추측해서 전송하는 과정에서 전송을 연속해서 눌러 중복된 값을 전송된 경우를 제거하는 문제이다.1. 입력시, 매번 라인마다 N의 값을 입력받고 N개의 숫자 ( 1-99까지 추측해서 전송한.. )를 입력받고 입력을 끝내고 싶으면숫자 0을 입력해서 종료한다.2. 출력시, 각 라인에서 첫번째 열에 위치한 N의값 제외 + 연속된 중복 제외 추측한 숫자들 나열 + 마지막에 $ 기호로 마무리한다.📌코드 설계하기main함수에서 입력값 조건에 맞춰서 입력 받고 , solution에서 코드 작성.오답 접근 ) 중복된 숫자를 indexOf() 함수 사용해서 숫자 배열의 현재 위치와 처음 발견된 위치가 동일한지 아닌지 비..

[문제링크]https://www.acmicpc.net/problem/5212📌 문제 탐색하기해수면 상승에 따라서 섬의 일부가 잠기는 현상으로 인해서 50년 이후 변경된 지도를 출력하는 문제이다. 지도의 가로,세로 크기를 입력받고 바다와 섬을 각각 o x 으로 입력받는다. x (섬) 주변에 o(바다)가 3개 이상 위치하면 섬은 50년뒤 사라지기때문에 x 를 o으로 변경한 뒤 최소 지도의 크기를 출력하는 문제이다.📌코드 설계하기지도의 크기와 지도를 모두 입력받는다.섬 (X) 주변의 바다(o)의 개수 3개이상인지 아닌지 체크한다. (함수를 만들어서 처리하기 - dy[] ,dx[] ) 주변에 바다의 개수가 3개 이상인 섬 (X)를 바다(o)으로 변경한다. 모든 섬 (x)을 포함하는 가장 작은 직사각형을 출력..