목록Algorithm (45)
in.add()
문제 링크 : https://programmers.co.kr/learn/courses/30/lessons/42883 코딩테스트 연습 - 큰 수 만들기 programmers.co.kr 문제 해결 방법 k개씩 보면서 최댓값을 찾아준다. class Solution { public String solution(String number, int k) { StringBuilder answer = new StringBuilder(); int idx = 0; for(int i = 0; i < number.length() - k; i++) { char max = '0'; for(int j = idx; j
문제 링크 : https://programmers.co.kr/learn/courses/30/lessons/42746 코딩테스트 연습 - 가장 큰 수 0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 programmers.co.kr 문제 해결 방법 numbers 모두 list에 담아준 후, 문자열+문자열 값을 int로 변환했을 때를 비교하여 오름차순으로 정렬했다. 마지막 테스트 케이스를 틀렸는데, list의 첫 번째 값이 "0"이라면 "0"을 return 하는 것을 추가해 통과할 수 있었다. import java..
문제 링크 : https://www.acmicpc.net/problem/2116 2116번: 주사위 쌓기 첫줄에는 주사위의 개수가 입력된다. 그 다음 줄부터는 한 줄에 하나씩 주사위의 종류가 1번 주사위부터 주사위 번호 순서대로 입력된다. 주사위의 종류는 각 면에 적혀진 숫자가 그림1에 있는 www.acmicpc.net 문제 해결 방법 0번 Dice의 각 side를 bottom으로 한 모든 경우의 최댓값을 찾아줬다. import java.util.ArrayList; import java.util.Scanner; public class Main { static class Dice { int idx; int[] side; public Dice(int idx, int[] side) { this.idx = id..
문제 링크 : https://www.acmicpc.net/problem/2012 2012번: 등수 매기기 첫째 줄에 자연수 N이 주어진다. (1 ≤ N ≤ 500,000) 둘째 줄부터 N개의 줄에 걸쳐 각 사람의 예상 등수가 순서대로 주어진다. 예상 등수는 500,000 이하의 자연수이다. www.acmicpc.net 문제 해결 방법 정렬하면 어떻게 해볼 수 있지 않을까 싶어서 정렬 후 index - 배열[index]로 차이를 구했고 차를 모두 더해서 출력했다. 한 개뿐인 테스트 케이스는 통과했지만 제출하니 실패해서 오래 고민했다. N이 최대일 때 모두가 예상 등수를 1로 하는 경우가 있다면 int 범위를 넘어가기 때문이었다. 차의 합을 구하는 dif 변수를 int에서 long으로 바꿔 성공할 수 있었다..
문제 링크 : https://www.acmicpc.net/problem/3085 3085번: 사탕 게임 예제 3의 경우 4번 행의 Y와 C를 바꾸면 사탕 네 개를 먹을 수 있다. www.acmicpc.net 문제 해결 방법 완전 탐색으로 오른쪽 사탕과 바꿨을 때, 아래 사탕과 바꿨을 때 최대 연속된 개수를 구하는 방법으로 구현했다. import java.util.Scanner; public class Main { static char[][] candies; public static void main(String[] args) { Scanner sc = new Scanner(System.in); int N = sc.nextInt(); candies = new char[N][N]; sc.nextLine();..
문제 링크 : https://programmers.co.kr/learn/courses/30/lessons/42885 코딩테스트 연습 - 구명보트 무인도에 갇힌 사람들을 구명보트를 이용하여 구출하려고 합니다. 구명보트는 작아서 한 번에 최대 2명씩 밖에 탈 수 없고, 무게 제한도 있습니다. 예를 들어, 사람들의 몸무게가 [70kg, 50kg, 80kg, 5 programmers.co.kr 문제 해결 방법 몸무게 배열을 정렬한 후, 가장 가벼운 사람부터 보면서 무게 제한을 넘지 않을 때까지 무거운 사람들을 더하도록 구현했다. import java.util.*; class Solution { public int solution(int[] people, int limit) { int answer = 0; int..
문제 링크 : https://programmers.co.kr/learn/courses/30/lessons/72412 = score) cnt++; } answer[i] = cnt; } return answer; } public void dfs(int cnt, String str, String[] infos) { if(cnt == 4) { int score = Integer.parseInt(infos[4]); if(!map.containsKey(str)) { ArrayList list = new ArrayList(); list.add(score); map.put(str, list); } else map.get(str).add(score); return; } dfs(cnt + 1, str + infos[cnt..
문제 링크 : https://programmers.co.kr/learn/courses/30/lessons/72411 코딩테스트 연습 - 메뉴 리뉴얼 레스토랑을 운영하던 스카피는 코로나19로 인한 불경기를 극복하고자 메뉴를 새로 구성하려고 고민하고 있습니다. 기존에는 단품으로만 제공하던 메뉴를 조합해서 코스요리 형태로 재구성해서 programmers.co.kr 문제 해결 방법 조합을 이용했다. HashMap에 를 저장해뒀고, 조합이 나온 수가 max 값 이라면 정답 배열에 추가했다. import java.util.*; class Solution { static HashMap[] setByCourse; // course 갯수 별로 set 저장할 hashmap 배열 static int N; // 현재 cour..