목록매일 (5)
코드 한 줄
* 본 문제와 풀이의 저작권은 매일프로그래밍에 있습니다. 길이가 같은 두 문자열 A와 B가 주어지면, 서로 1:1 암호화가 가능한지 찾아라. 예제 } Input : "EGG", "FOO" Output : True // E->F, G->O Input : "ABBCD", "APPLE" Output : True // B->P, C->L, D->E Input : "AAB", "FOO" Output : False 이 문제는 해쉬맵(hashmap)을 써서 A의 문자를 B의 문자 매칭을 저장하면 된다. A의 문자가 해쉬맵의 키로 있다면, B의 문자와 해쉬맵의 있는 값과 비교한다. A의 문자가 해쉬맵의 키로 없다면, B의 문자가 해쉬맵의 값으로 있는지 확인하고 없으면 해쉬맵에 더해준다. bool solve(String..
* 본 문제와 풀이의 저작권은 매일프로그래밍에 있습니다. 정수 배열과 타겟값이 주어지면, 합이 타겟값이 되는 두 원소의 인덱스를 찾아라. 예제 } Input : [2, 5, 6, 1, 10], 타겟값 : 8 Output : [0, 2] // 배열[0] + 배열[2] = 8 이 문제는 해쉬맵을 사용하여 원소 값과 원소 인덱스를 저장하면 쉽게 풀 수 있다. 각 배열의 원소마다 (타겟 - 원소 값)이 해쉬맵에 있는지 확인하면 된다. int[] solution(int[] input, int target) { Map map = new HashMap(); for(int i=0; i
* 본 문제와 풀이의 저작권은 매일프로그래밍에 있습니다. 정수 n이 주어지면, n개의 여는 괄호 "("와 n개의 닫는 괄호 ")"로 만들 수 있는 괄호 조합을 모두 구하라. 예제} Input : 1 Output : ["()"] Input : 2 Output : ["(())", "()()"] Input : 3 Output : ["((()))", "(())()", "()(())", "()()()"] 주로 조합을 구하거나 답의 양이 많을 경우는 재귀함수를 사용하면 된다. empty string 부터 시작하여 "("를 더하고 재귀함수를 부르고, ")"를 더하고 재귀함수를 부르면 된다. 여기서 중요한 건, 현재 몇 개의 여는 괄호를 사용 하였는지와 몇 개의 닫는 괄호를 사용 하였는지 알아야 한다. 괄호 조합을 왼..
* 본 문제와 풀이의 저작권은 매일프로그래밍에 있습니다. 우선 피보나치란, 0과 1로 시작하며 다음 피보나치 수는 바로 앞의 두 피보나치 수의 합이 된다. 이때, 주어지는 정수 n보다 작은 피보나치 수 중 모든 짝수의 합을 구하라. 예제} Input : n = 12 Output : 10 // 0, 1, 2, 3, 5, 8 중 짝수인 2 + 8 = 10 이 문제는 n보다 클 때까지 피보나치의 수를 구하며 짝수인 피보나치 수를 다 더해주면 된다. int evenFibSum(int N) { int sum = 0; int x = 1; int y = 2; while (x
* 본 문제와 풀이의 저작권은 매일프로그래밍에 있습니다. 정수 배열(int array)가 주어지면 가장 큰 이어지는 원소들의 합을 구하시오. 단, 시간복잡도는 O(n). 예제} Input : [-1, 3, -1, 5] Output : 7 // 3 + (-1) + 5 Input : [-5, -3, -1] Output : -1 // -1 Input : [2, 4, -2, -3, 8] Output : 9 // 2 + 4 + (-2) + (-3) + 8 이 문제는 두 개의 정수 변수로 현재의 합(currentSum)과 전체의 제일 큰 합(maxSum)을 저장해야 합니다. 각 원소마다 (currentSum + 원소) 값을 원소 값이랑 비교하고, 더 큰 값이 currentSum이 됩니다. maxSum은 curren..