📑 1. 문제설명💡 2. 풀이과정이건 이중 for문 + Set + 정렬 문제이다.입출력예에서 중복값이 없기 때문에 중복을 허용하지 않는 자료형 해시셋을 사용해서 푼다. 1. 배열에서 이중 포문을 사용해서 두 수를 선택하는 모든 경우의 수를 구한다.2. 위에서 구한 수를 더해서 해시셋에 추가해서 중복제거한다.3. 해시셋 값을 오름차순 정렬한다.4. int[] 형태의 배열로 변환해서 반환한다. 이 때 stream을 사용한다.👨💻 3. 정답코드처음에 이중 for문의 범위를 잘못 잡았는데, 바깥 for문의 i 범위를 `i 이렇게 하면 노노❌ 왜냐하면 바깥 for문에서 i 이 경우 j 결국 바깥 for문 마지막 반복 (i == 마지막 인덱스)에서는 j가 더할 상대가 없기 때문에쓸모 없는 반복이 한 번 일..
📑 1. 문제설명💡 2. 풀이과정이렇게 반환할 문자열의 길이가 고정되지 않은 경우는 배열을 못 쓰기 때문에StringBuilder을 써주는게 좋다. StringBuilder을 쓰면 마지막에 문자열을 반환할 때 toString() 으로 전환해야 한다.code를 인덱스에 따라 한 글자씩 돌면서 각 문자(char)이 1인지 아닌지 확인한다.1이면 mode 전환1이 아니면i) mode가 0일 때는 인덱스가 짝수면 해당 문자를 ret에 append함ii) mode가 1일 때는 인덱스가 홀수면 해당 문자를 ret에 append함ret.length()가 0이면 "EMPTY" 출력, 아니면 ret.toString() 출력👨💻 3. 정답코드class Solution { public String soluti..
📑 1. 문제설명💡 2. 풀이과정먼저 앞 3개의 항을 변수에 담는다.등차수열인지 등비수열인지 판별한다. b-a 랑 c-b가 같으면 등차수열이고 아니면 등비수열이다. 다음에 올 값 구하는 법 ▼등차수열이라면 common배열의 마지막 요소에 b-a 값을 더한다.등비수열이라면 common배열의 마지막 요소에 b/a 값을 곱한다.👨💻 3. 정답코드class Solution { public int solution(int[] common) { // 앞 3개의 항으로 등차수열인지 등비수열인지 판별 int a = common[0]; int b = common[1]; int c = common[2]; int index = common.lengt..
📑 1. 문제설명💡 2. 풀이과정길이 num 크기의 int[]배열 선언시작값을 구해서 연속된 숫자만큼 배열에 집에 넣는다이 때 시작값 구하는 공식은 `start = 평균 - (num - 1) / 2``start = total / n - (num - 1) / 2`이 때 (num - 1) / 2는 중앙값에서 왼쪽으로 얼마나 떨어져 있는지를 구하는 것이다.👨💻 3. 정답코드import java.util.*;class Solution { public int[] solution(int num, int total) { int[] answer = new int[num]; // 시작값 : (총합 - 개수의 중간값 합) / 개수 int start = to..
📑 1. 문제설명💡 2. 풀이과정A를 오른쪽으로 한 글자씩 "문자열 밀기" 연산을 최대 A.length() 번까지 수행해 본다.매번 B와 비교해서 같아지면 그때의 횟수를 리턴한다.끝까지 같아지지 않으면 -1을 리턴한다.👨💻 3. 정답코드class Solution { public int solution(String A, String B) { for(int i = 0; i 👏🏻 4. 좋아요 가장 많이 받은 코드class Solution { public int solution(String A, String B) { String tempB = B.repeat(3); return tempB.indexOf(A); }}String.repeat(3)는..
📑 1. 문제설명💡 2. 풀이과정이건 메서드만 알면 쉽게 푸는 문제이다. 매개변수로 받은 이진수 2개는 문자열이므로 문자열을 10진수 숫자로 변환후두 개를 더해서 다시 2진수 문자열로 반환하면 된다. 👨💻 3. 정답코드class Solution { public String solution(String bin1, String bin2) { // 이진수 문자열 → 10진수 숫자로 변환 int n1 = Integer.parseInt(bin1, 2); int n2 = Integer.parseInt(bin2, 2); // 두 수를 더하고, 다시 이진수를 문자열로 변환 return Integer.toBinaryString(n..
📑 1. 문제설명💡 2. 풀이과정처음에는 간단하게 주어진 매개변수 chicken/10 + (chicken/10)/10 을 리턴하면 된다고 생각했다.class Solution { public int solution(int chicken) { return chicken / 10 + (chicken/10) / 10; }}처음 chicken 수에서 받은 쿠폰으로 1차 서비스 치킨을 계산하고그 서비스 치킨에서 나온 쿠폰으로 딱 한 번만 추가 서비스 치킨을 더해주는 방식이다. 하지만 이렇게 하면 오답처리 된다.서비스 치킨에서도 또 쿠폰이 나오고, 그 쿠폰으로 또 서비스 치킨이 생기고, 그 치킨에서도 또 쿠폰이 생기고...이렇게 계속 반복이 된다. 즉 서비스 쿠폰이 또 10개가 넘어가면 또..
📑 1. 문제설명💡 2. 풀이과정문제에서 각 단어는 최대 한 번씩만 이어 붙일 수 있다고 했다. 이 말은 같은 단어를 두 번 이어 붙인 단어 "ayaaya", "yeye"와 같은 것들은 발음할 수 없다는 것을 뜻한다. 따라서 boolean 타입의 isValid 변수를 선언하고 처음에 true로 초기화 해 준 뒤,같은 단어가 중복되서 발음할 수 없는 단어는 false로 바꾼다. 만약 발음 가능한 단어라면 해당 단어를 ""로 치환한다.치환한 결과값이 비어 있으면 발음가능한 단어로 카운트한다.이렇게 마지막에 최종 카운트를 반환하면 발음할 수 있는 단어의 개수가 된다. 첫번째 시도(틀림)class Solution { public int solution(String[] babbling) { ..