본문 바로가기

Problem Solving

2. 전체탐색(암호) 문제(암호)TopCoder Security Agency(TSA, 오늘 설립되었어요!)는 새로운 암호화 시스템을 개발했습니다. 이 시스템은 암호화하려고 숫자 리스트를 입력받습니다.여러분은 TSA의 비밀 정보 수사원입니다. 암호화 과정에서 중요한 부분을 구현하는 것이 여러분의 일입니다. 여러분은 입력 리스트에서 1개의 값을 선택하고 값을 1 증가시킵니다. 이때 리스트 내부의 모든 숫자 곱이 가장 커져야 합니다.int[] numbers 형태로 숫자 배열이 주어질 때 곱의 최댓값을 리턴하세요. 리턴값이 2^62를 넘는 문제는 나오지 않을 것을 보장합니다.입력numbers : 2~50개의 요소가 있는 배열이며 각 요소의 값은 1~1000입니다.출력정수를 담고있는 변수IO Example1234567891011121..
2. 전체 탐색(즐거운 파티) 전체탐색:-선택 사항이 몇개 있고 어떤 것을 선택해야 할지 모른다면 모든 경우를 테스트하자는 것-모든 패턴을 조사해야 하는 것과 그것을 필요로 하는문제-시뮬레이션과 다르게 어떠한 작업을 수행할지 적혀있지 않음 문제(즐거운 파티)화이트씨는 다재다능한 사람입니다.(모든 것이 그의 관심 대상입니다). 그래서 그에게는 친구가 많습니다. 하지만 불행하게도 그의 친구들은 다재다능하지 않습니다. 각각의 친구는 2가지 주제에만 관심이 있고 다른 주제로 이야기 하는 것을 싫어합니다. 그래서 파티를 개최할 때마다 모두가 즐겁게 파티를 보내려면 어떤 친구를 초대할지가 큰 문제입니다. 화이트씨는 그동안의 경험으로 초대된 친구 모두가 공통의 흥미 있는 화제가 있을 때 파티를 즐긴다는 것을 알았습니다.문자열 배열 first, s..
1. 시뮬레이션 시뮬레이션: 초기 상태와 어떤 작업을 수행할지 제공하고 최종 결과가 어떻게 될지 답하는 문제.주어진 처리를 수행하기만 하면 되는 간단한 내용.이런 과정을 거쳐 나온 결과가 무엇인가?과정에 따라 코드를 작성하면 된다.수행해야 하는 과정이 모두 나와 있는 문제 키위 주스 문제타로는 맛있는 키위 주스를 준비했습니다. 타로는 0부터 N-1이라 이름을 붙인 N개의 병에 키위 주스를 넣었습니다. 이때 i번째의 병의 용량은 capacities[i] 리터이며 타로가 i번째 병에 넣은 키위 주스의 양을 bottles[i] 리터라고 합니다.타로는 병에 키위 주스를 재분배하려고 하며, 0부터 M-1까지 M회 조작합니다. i번쨰의 조작은 타로가 병 fromId[i]부터 병 toId[i]에 키위 주스를 넣는 것을 의미합니다. ..
백준 2309번 1. 7가지의 합이 100인 경우를 for문을 이용해 단순하게 다 해보았다. 12345678910111213141516171819202122232425262728293031323334353637383940414243444546 import java.util.Arrays;import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc= new Scanner(System.in); int count = 9; int[] arr = new int[count]; while(count-- > 0) { arr[count] = sc.nextInt(); } Arrays.sort(arr);//배열을 미리 오름차순 ..
백준 2941번 1. 주어진 단어안에 크로아티아 문자들이 있다면 *로 바꿔주고 몇개 들어있는지 체크한다.2. 나머지 다른 문자들의 갯수와 합쳐 출력한다. 1234567891011121314151617181920212223242526import java.util.Scanner;public class Main { public static void main(String[] args) { String words = new String(); Scanner sc= new Scanner(System.in); String croWords[] = new String[]{"c=","c-","dz=","d-","lj","nj","s=","z="}; //크로아티아 문자들 words = sc.nextLine().trim(); int k =0;..
백준 1152번 next()와 nextLine()의 차이점을 잘 알아야 했다.처음에 nextLine()의 특성을 제대로 알지 못해 틀렸다.nextLine()의 경우 한줄 단위로 입력 받아서 개행문자도 한줄로 인식한다. next()는 개행문자, 공백은 무시하고 문자를 입력받는다.문제 핵심은 한칸 띄어쓰기를 split 메소드를 사용하여 단어갯수를 출력하였다. 12345678910111213141516171819import java.util.Scanner;public class Main1152 { public static void main(String[] args) { String words = new String(); Scanner sc= new Scanner(System.in); words = sc.nextLine().t..
백준 1316번 https://www.acmicpc.net/problem/1316문제풀이 핵심은 for 반복문 중첩을 활용했다.그룹단어 체크 메소드에서 값을 입력받고 그룹단어라면 0을 출력하고 아니라면 1을 출력하게하였다.만약 aabca라는 값을 입력받는다면맨 첫번째 값 a를 temp로 지정하고 temp와 뒤에값 a,b,c,a 를 순서대로 비교해간다. 비교해가다가 a와 다른 알파벳 b를 만나게되면 b뒤에 있는 값 c,a 중 현재 temp와 같은 a가 있는지 검사한다.있다면 그룹단어 1을 출력한다.이런식으로 계속 입력받은 단어들을 반복 비교한다. 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748import java...
백준 10809번 https://www.acmicpc.net/problem/10809입력값을 문자 배열로 바꿔주고 각 문자의 위치를 찾아 반환하였다. 어렵지 않게 풀었다. 123456789101112131415161718import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner sc= new Scanner(System.in); String word = sc.nextLine(); word = word.trim(); char[] charARR = word.toCharArray();//문자 배열로 바꾸고 for(int i='a'; i