반응형

Java 50

[프로그래머스] 문자열 내 마음대로 정렬하기 - Java(자바)

문제설명 문자열로 구성된 리스트 strings와, 정수 n이 주어졌을 때, 각 문자열의 인덱스 n번째 글자를 기준으로 오름차순 정렬하려 합니다. 예를 들어 strings가 ["sun", "bed", "car"]이고 n이 1이면 각 단어의 인덱스 1의 문자 "u", "e", "a"로 strings를 정렬합니다. 제한 조건 strings는 길이 1 이상, 50이하인 배열입니다. strings의 원소는 소문자 알파벳으로 이루어져 있습니다. strings의 원소는 길이 1 이상, 100이하인 문자열입니다. 모든 strings의 원소의 길이는 n보다 큽니다. 인덱스 1의 문자가 같은 문자열이 여럿 일 경우, 사전순으로 앞선 문자열이 앞쪽에 위치합니다. 출력 형식 원래의 비밀지도를 해독하여 '#', 공백으로 구성된..

프로그래머스 2023.02.17

[프로그래머스] 1차 비밀지도 - Java(자바)

문제설명 네오는 평소 프로도가 비상금을 숨겨놓는 장소를 알려줄 비밀지도를 손에 넣었다. 그런데 이 비밀지도는 숫자로 암호화되어 있어 위치를 확인하기 위해서는 암호를 해독해야 한다. 다행히 지도 암호를 해독할 방법을 적어놓은 메모도 함께 발견했다. 1. 지도는 한 변의 길이가 n인 정사각형 배열 형태로, 각 칸은 "공백"(" ") 또는 "벽"("#") 두 종류로 이루어져 있다. 2. 전체 지도는 두 장의 지도를 겹쳐서 얻을 수 있다. 각각 "지도 1"과 "지도 2"라고 하자. 지도 1 또는 지도 2 중 어느 하나라도 벽인 부분은 전체 지도에서도 벽이다. 지도 1과 지도 2에서 모두 공백인 부분은 전체 지도에서도 공백이다. 3. "지도 1"과 "지도 2"는 각각 정수 배열로 암호화되어 있다. 4. 암호화된 ..

프로그래머스 2023.02.10

[이펙티브 자바] Item 64 객체는 인터페이스를 사용해 참조하라

예제 // 인터페이스 참조한 예 Set set = new LinkedHashSet(); // 그렇지 않은 예 LinkedHashSet set = new LinkedHashSet(); LinkedHashSet 은 Set 인터페이스를 상속받고 있다. 위의 예제에서는 LinkedHashSet을 Set 타입으로 업캐스팅하여 사용하고 있다. ※ 주의: 업캐스팅으로 인해 set은 Set 타입이므로 LinkedHashSet 에만 존재하는 기능을 사용할 수 없게 됨 WHY?? 왜 인터페이스를 참조하라는 걸까? ( 더 나은 성능을 위해 ) 원래의 타입을 변경해야 하는 경우 예제 // 인터페이스를 참조한 예 // 구현체(LinkedHashSet -> HashSet)를 변경해도 코드는 변경되지 않음 Set set = new..

Java 2023.02.07

[프로그래머스] 삼총사 - Java(자바)

문제설명 한국중학교에 다니는 학생들은 각자 정수 번호를 갖고 있습니다. 이 학교 학생 3명의 정수 번호를 더했을 때 0이 되면 3명의 학생은 삼총사라고 합니다. 예를 들어, 5명의 학생이 있고, 각각의 정수 번호가 순서대로 -2, 3, 0, 2, -5일 때, 첫 번째, 세 번째, 네 번째 학생의 정수 번호를 더하면 0이므로 세 학생은 삼총사입니다. 또한, 두 번째, 네 번째, 다섯 번째 학생의 정수 번호를 더해도 0이므로 세 학생도 삼총사입니다. 따라서 이 경우 한국중학교에서는 두 가지 방법으로 삼총사를 만들 수 있습니다. 제한사항 3 ≤ number의 길이 ≤ 13 -1,000 ≤ number의 각 원소 ≤ 1,000 서로 다른 학생의 정수 번호가 같을 수 있습니다. 입출력 예 d 배열 result [..

프로그래머스 2023.02.06

[Java] 조합 알고리즘 java 코드로 구현하기

조합이란? 배열에서 몇개를 중복없이 추출하는 것을 말한다. 예를 들면, 배열 int[] arr = {1, 2, 3, 4} 에서 2개의 요소만 중복없이 추출하고 싶은 경우 [1, 2], [2, 3], [3, 4] [1, 3], [2, 4] [1, 4] 총 6개가 출력되어야 한다. 조합을 구현할때 백트래킹과 재귀함수 방법이 있다고 한다. 나는 너무 헷갈려서 우선 가장 간단한 예제로 조합을 구현해보았고, 나중에 프로그래머스에서 문제 풀 때 조건만 다르게 해서 적용해 볼 예정이다. 코드 class CombinationExample { public static void main(String[] args) { int[] arr = {1,2,3,4}; getCombination(arr); } public static..

Java 2023.02.06

[프로그래머스] 시저암호 - Java(자바)

문제설명 어떤 문장의 각 알파벳을 일정한 거리만큼 밀어서 다른 알파벳으로 바꾸는 암호화 방식을 시저 암호라고 합니다. 예를 들어 "AB"는 1만큼 밀면 "BC"가 되고, 3만큼 밀면 "DE"가 됩니다. "z"는 1만큼 밀면 "a"가 됩니다. 문자열 s와 거리 n을 입력받아 s를 n만큼 민 암호문을 만드는 함수, solution을 완성해 보세요. 제한사항 공백은 아무리 밀어도 공백입니다. s는 알파벳 소문자, 대문자, 공백으로만 이루어져 있습니다. s의 길이는 8000이하입니다. n은 1 이상, 25이하인 자연수입니다. 입출력 예 s n result "AB" "z" "a B z" 1 1 4 "BC" "a" "e F d" [ 내가 푼 방법 ] class Solution { public String solut..

프로그래머스 2023.01.30

[프로그래머스] 두 개 뽑아서 더하기 - Java(자바)

문제설명 정수 배열 numbers가 주어집니다. numbers에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 배열에 오름차순으로 담아 return 하도록 solution 함수를 완성해주세요. 제한사항 numbers의 길이는 2 이상 100 이하입니다. numbers의 모든 수는 0 이상 100 이하입니다. 입출력 예 arr return [2,1,3,4,1] [2,3,4,5,6,7] [5,0,2,7] [2,5,7,9,12] [ 내가 푼 방법 ] import java.util.*; class Solution { public int[] solution(int[] numbers) { ArrayList arr = new ArrayList(); for(int i=0; i

프로그래머스 2022.10.30

[프로그래머스] 나누어 떨어지는 숫자 배열 - Java(자바)

문제설명 array의 각 element 중 divisor로 나누어 떨어지는 값을 오름차순으로 정렬한 배열을 반환하는 함수, solution을 작성해주세요. divisor로 나누어 떨어지는 element가 하나도 없다면 배열에 -1을 담아 반환하세요. 제한사항 arr은 자연수를 담은 배열입니다. 정수 i, j에 대해 i ≠ j 이면 arr[i] ≠ arr[j] 입니다. divisor는 자연수입니다. array는 길이 1 이상인 배열입니다. 입출력 예 arr divisor return [5, 9, 7, 10] 5 [5, 10] [2, 36, 1, 3] 1 [1, 2, 3, 36] [3, 2, 6] 10 -1 [ 내가 푼 방법 ] import java.util.*; class Solution { public ..

프로그래머스 2022.10.18

[프로그래머스] 예산 - Java(자바)

문제설명 부서별로 신청한 금액이 들어있는 배열 d와 예산 budget이 매개변수로 주어질 때, 최대 몇 개의 부서에 물품을 지원할 수 있는지 return 하도록 solution 함수를 완성해주세요. 각 부서가 신청한 금액만큼을 모두 지원해 줘야 합니다. 제한사항 d는 부서별로 신청한 금액이 들어있는 배열이며, 길이(전체 부서의 개수)는 1 이상 100 이하입니다. d의 각 원소는 부서별로 신청한 금액을 나타내며, 부서별 신청 금액은 1 이상 100,000 이하의 자연수입니다. budget은 예산을 나타내며, 1 이상 10,000,000 이하의 자연수입니다. 입출력 예 d 배열 budget result [1,3,2,5,4] 9 3 [2,2,3,3] 10 4 [ 내가 푼 방법 ] import java.uti..

프로그래머스 2022.10.10
반응형