반응형

Java 125

[백준 Baekjoon] 11479번 통나무 건너뛰기 - JAVA

백준 Baekjoon 11479번 통나무 건너뛰기 - JAVA 문제 풀이 가장 난이도가 낮은 배열로 만드는 방법이 무엇인지 찾아야 한다. 첫번째 통나무와 마지막 통나무도 연결된 것으로 단순히 정렬하는 것으로는 답을 구할 수가 없다. 문제에서 주어진 {2, 4, 5, 7, 9}의 답은 [2, 5, 9, 7, 4]이다. 예시를 보면 가장 작은 값들을 양 끝에 두고 가운데로 갈 수록 갚이 커진다는 것을 보고 문제 풀이를 유추할 수 있다. 주어진 입력 배열을 정렬시킨다. 정렬된 배열의 숫자를 새로운 배열 양끝에 번갈아 가며 넣는다. 배열에서 최대 난이도를 찾아 출력한다. 소스 코드 import java.io.BufferedReader; import java.io.IOException; import java.io..

[백준 Baekjoon] 5212번 지구 온난화 - JAVA

백준 Baekjoon 5212번 지구 온난화 - JAVA 문제 설명 입력받은 지도의 땅 주변의 바다의 수를 확인하여 3면이 바다인 경우 바다로 변경하고, 출력할 범위를 찾아 출력하면 되는 문제이다. 입력받은 지도에서 땅을 바다로 변경하는 경우 다른 땅의 주변 바다가 늘어나 별도의 배열을 만들어 사용해야 한다. 땅의 경우 주변 바다의 수를 검사 변경해야 하는 경우 변경 50년 후에도 땅인 경우 출력범위를 갱신 출력범위의 지도를 출력 소스 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { pu..

[백준 Baekjoon] 3077번 임진왜란 - JAVA

백준 Baekjoon 3077번 임진왜란 - JAVA 문제 풀이 올바른 순서가 주어졌을 때, 작성한 답안을 2개씩 비교하여 순서가 올바르면 1점씩 증가한다. N이 5일 때 {0, 1}, {0, 2}, {0, 3}, {0, 4}, {1, 2}, {1, 3}, {1, 4}, {2, 3}, {2, 4} {3, 4} 이렇게 두개씩 짝을 지어 올바른 순서의 순서와 같은지 비교하면 된다. 해전을 HashMap을 사용하여 문자열의 순서를 저장하여 쉽게 찾을 수 있도록 하면 된다. 소스 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.HashMap; import ja..

[백준 Baekjoon] 16992번 로마 숫자 만들기 - JAVA

백준 Baekjoon 16992번 로마 숫자 만들기 - JAVA 문제 풀이 4가지의 로마 숫자를 활용하여 만들어 낼 수 있는 수의 개수를 찾는 문제이다. 같은 숫자를 여러번 사용가능한 중복 조합의 문제이다. 순서는 신경쓰지 않아 백트래킹의 반복문에서 i번 부터 for문을 시작하면 된다. 주의할 점은 이 문제에서는 로마 숫자로 만든 수를 찾는 문제로 51 (50 + 1 * 10), (5 * 10 + 1) 과 같이 다른 방법으로도 같은 수를 만들 수 있어 중복 검사를 해줘야 한다. 소스 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { public st..

[백준 Baekjoon] 5014번 스타트링크 - JAVA

백준 Baekjoon 5014번 스타트링크 - JAVA 문제 풀이 위, 아래 버튼 두개를 잘 조합하여 원하는 층으로 최단거리로 이동하는 문제이다. 이런식으로 최단거리를 구할때에는 BFS탐색을 사용하여 쉽게 풀 수 있다. 층의 수가 1000000까지 밖에 안되고 위, 아래 두가지만 있어 큐에 위로 갔을 경우 아래로 갔을 경우 두 가지 모두 추가해주고, 도착하면 이동 횟수를 출력함으로서 쉽게 구할 수 있다. 제한사항이 크지 않아도 위, 아래의 조합에서 중복이 많이 발생 할 수 있어 boolean 배열로 체크를 해줘야 한다. 소스 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; impor..

[백준 Baekjoon] 1715번 카드 정렬하기 - JAVA

백준 Baekjoon 1715번 카드 정렬하기 - JAVA 문제 풀이 문제의 예시에서 처럼 최소한의 비교를 위해서는 매번 가장 작은 2개의 묶음을 비교하면 된다. 매번 가장 작은 묶음을 쉽게 찾아 꺼내기 위해 우선순위 큐를 사용한다. 묶음이 1개만 남을때까지 가장 작은 두 개의 묶음을 꺼내 더한값을 총 비교횟수에 더하고 우선순위 큐에 넣어준다. while문이 종료되면 총 최소 비교 횟수가 남게 되고 출력하면 된다. 카드 묶음의 크기는 1000으로 작으나 모든 카트 묶음이 1000이라 하고 N이 100,000인 경우에는 int값의 범위를 초과하기 때문에 우선순위 큐와 총 비교 횟수는 long 타입을 사용해야 한다. 소스 코드 import java.io.BufferedReader; import java.io..

[백준 Baekjoon] 13458번 시험 감독 - JAVA

문제 풀이 문제를 읽어보면 이해하는데나 방법을 찾는데에 큰 어려움은 없는 쉬운 문제입니다. 각 시험장에서 총감독이 관리하는 인원만큼 제외하고 부감독이 몇명 필요한지 구해 총 합을 리턴하면 됩니다. 하지만 문제의 제한사항을 제대로 안보면 틀렸다고 나오는데 N이 1,000,000, 각 시험장에 1,000,000 명씩, B와 C가 모두 1이라고 가정하면 결과는 int범위를 넘어서는 큰 수가 나오게 됩니다. 총 합을 구할때에 long 타입으로 하면 이슈없이 문제를 푸실 수 있습니다. 소스 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokeniz..

[프로그래머스] JadenCase 문자열 만들기 - JAVA

프로그래머스 JadenCase 문자열 만들기 - JAVA 문제 설명 JadenCase란 모든 단어의 첫 문자가 대문자이고, 그 외의 알파벳은 소문자인 문자열입니다. 문자열 s가 주어졌을 때, s를 JadenCase로 바꾼 문자열을 리턴하는 함수, solution을 완성해주세요. 제한 조건 s는 길이 1 이상인 문자열입니다. s는 알파벳과 공백문자(" ")로 이루어져 있습니다. 첫 문자가 영문이 아닐때에는 이어지는 영문은 소문자로 씁니다. ( 첫번째 입출력 예 참고 ) 문제 풀이 문제를 읽고 Level 2중에서 쉬운 문제라고 생각했습니다. 문자열을 조금이라도 다룰줄 안다면 쉽게 풀 수 있는 문제인거 같습니다. Tip. 백준이나 프로그래머스에서 이와 비슷한 문제들을 여럿 풀어보며 문제 설명 혹은 제한 조건에..

[프로그래머스] 전력망을 둘로 나누기 - JAVA

프로그래머스 전력망을 둘로 나누기 - JAVA 문제 설명 n개의 송전탑이 전선을 통해 하나의 트리 형태로 연결되어 있습니다. 당신은 이 전선들 중 하나를 끊어서 현재의 전력망 네트워크를 2개로 분할하려고 합니다. 이때, 두 전력망이 갖게 되는 송전탑의 개수를 최대한 비슷하게 맞추고자 합니다. 송전탑의 개수 n, 그리고 전선 정보 wires가 매개변수로 주어집니다. 전선들 중 하나를 끊어서 송전탑 개수가 가능한 비슷하도록 두 전력망으로 나누었을 때, 두 전력망이 가지고 있는 송전탑 개수의 차이(절대값)를 return 하도록 solution 함수를 완성해주세요. 제한사항 n은 2 이상 100 이하인 자연수입니다. wires는 길이가 n-1인 정수형 2차원 배열입니다. wires의 각 원소는 [v1, v2] ..

[프로그래머스] 피로도 - JAVA

프로그래머스 피로도 - JAVA 문제 설명 XX게임에는 피로도 시스템(0 이상의 정수로 표현합니다)이 있으며, 일정 피로도를 사용해서 던전을 탐험할 수 있습니다. 이때, 각 던전마다 탐험을 시작하기 위해 필요한 "최소 필요 피로도"와 던전 탐험을 마쳤을 때 소모되는 "소모 피로도"가 있습니다. "최소 필요 피로도"는 해당 던전을 탐험하기 위해 가지고 있어야 하는 최소한의 피로도를 나타내며, "소모 피로도"는 던전을 탐험한 후 소모되는 피로도를 나타냅니다. 예를 들어 "최소 필요 피로도"가 80, "소모 피로도"가 20인 던전을 탐험하기 위해서는 유저의 현재 남은 피로도는 80 이상 이어야 하며, 던전을 탐험한 후에는 피로도 20이 소모됩니다. 이 게임에는 하루에 한 번씩 탐험할 수 있는 던전이 여러개 있..

카테고리 없음 2021.11.07
반응형