Banner

My Tech Blog (정답)

오늘의 명언
📑 1. 문제설명 💡 2. 풀이과정처음에는 3,6,9 게임을 잘못 이해했다.3의 배수일 때 박수 치는 걸로 이해해서 해당 숫자를 3으로 나눈 나머지가 0일 때 cnt ++을 하는 실수를 했다. 하지만 오리지널 369게임은 숫자 3, 6, 9가 들어가면 박수를 치는 게임이다. 즉, 숫자 하나 하나가 3 또는 6 또는 9 값을 가지면 횟수를 카운트하고 마지막에 총 횟수를 리턴한다. 주어진 숫자를 문자열로 바꿔서 각 자릿수를 탐색해도 되지만이 문제에서 어차피 숫자의 순서는 상관 없고주어진 order 안에서 3, 6, 9가 총 몇개인지 갯수면 세면 되는 문제이기 때문에주어진 숫자를 10으로 나눈 나머지가 3,6,9에 해당하는지만 확인하면 쉽게 풀 수 있다. 1. 주어진 숫자(order)를 10으로 나눈 나머..
📑 1. 문제설명💡 2. 풀이과정 n과 가장 가까운 수를 구하려면 n에서 해당 요소를 뺀 값이 제일 작아야 한다고생각했다.즉 `n - array[i]` 의 절대값이 0이거나 가장 작은 것을 구하는 접근 방식을 취했다. 처음에는 n - array[i] 이 현재 min 에 저장된 최소값보다 작으면최소값을 min에, 해당 요소의 배열 index를 answer 변수에 업데이트 하는 방식으로 풀었다.하지만 코드가 예상대로 돌아가지 않았다.import java.util.Arrays;class Solution { public int solution(int[] array, int n) { int min = Math.abs(n - array[0]); int answer =..
📑 1. 문제설명💡 2. 풀이과정배열을 오름차순 정렬한 뒤, 가장 작은 두 숫자의 합이 가장 큰 수보다 크면 1을 리턴, 아니면 2를 리턴한다. 삼항연산자로 바로 풀이 가능👨‍💻 3. 정답코드import java.util.Arrays;class Solution { public int solution(int[] sides) { Arrays.sort(sides); return (sides[0] + sides[1] > sides[2])? 1 : 2; }} 👏🏻 4. 좋아요 가장 많이 받은 코드그것이 곧 내 코드이다.... 쁘이ㅋㅋㅋㅋㅋ 나의 실력 일취월장 >오랜만에 잘 쓴 코드
📑 1. 문제설명 💡 2. 풀이과정이 문제는 주어진 문자열 my_string에서 중복된 문자를 제거하고, 원래의 순서를 유지하면서 중복이 없는 새로운 문자열을 반환하는 것이다. 1. StringBuilder 선언2. 일반적인 HashSet을 사용하면 순서가 보장되지 않지만, LinkedHashSet은 삽입 순서를 유지한다.3. 문자열을 문자 배열로 변환한 후, 한 글자씩 순회하면서 StringBuilder에 문자를 추가한다.3-1. 이 때, LinkedHashSet의 add() 메서드는 이미 존재하는 값이면 false를 반환하고, 새로운 값이면 true를 반환한다.3-2. sb.append(c)를 호출하여 StringBuilder에 처음 등장한 문자만 sb에 추가된다.4. 마지막으로 StringBu..
📑 1. 문제설명 입출력 예 설명입출력 예 #1["We", "are", "the", "world!"]의 각 원소의 길이인 [2, 3, 3, 6]을 return합니다.입출력 예 #2["I", "Love", "Programmers."]의 각 원소의 길이인 [1, 4, 12]을 return합니다.💡 2. 풀이과정✔️ 해결방법매개변수로 받은 strlist의 길이만큼 결과값을 담을 배열(lengths)을 하나 선언 해 준다.그리고 반복문을 돌려가며strlist각 요소(문자열)의 길이를 구해서 배열(lengths)에 담아 리턴한다. ✔️ length()와 length의 차이만 알면 쉬운 문제`length` 는배열에서 사용 되고, `legnth();`는 문자열에서 사용된다. 2-1. lengthlength는 배열..
📑 1. 문제설명💡 2. 풀이과정1. 문자열을 공백을 기준으로 나눠 배열 str에 저장한다.2. 최종 결과 값을 저장할 sum 변수 선언3. 마지막으로 추가된 숫자를 저장할  lastNumber 변수 선언4. 배열을 순회하면서4-1. "Z"가 나오면 lastNumber를 sum에서 뺀다.4-2. 숫자가 나오면 lastNumber에 저장하고 sum에 더한다.5. 최종 sum을 반환한다.👨‍💻 3. 정답코드class Solution { public int solution(String s) { String[] tokens = s.split(" "); int sum = 0; int lastNumber = 0; for (String to..
📑 1. 문제설명 입출력 예 설명입출력 예 #112를 소인수분해하면 2 * 2 * 3 입니다. 따라서 [2, 3]을 return합니다.입출력 예 #217은 소수입니다. 따라서 [17]을 return 해야 합니다.입출력 예 #3420을 소인수분해하면 2 * 2 * 3 * 5 * 7 입니다. 따라서 [2, 3, 5, 7]을 return합니다. 💡 2. 풀이과정 중복을 제거하면서 순서를 유지하려고 LinkedHashSet을 사용해서 풀었다.1. for문의 범위는 `i * i 2. while (n % i == 0)로 중복되는 소인수를 처리하기3. 마지막에 남은 수가 n > 1인지 확인해서 소수를 결과값에 추가하기  소인수분해 과정에서 같은 소수가 여러 번 나올 수 있다. 예를 들어, 12 = 2 × 2 × ..
📑 1. 문제설명💡 2. 풀이과정그냥  my_string 을 char[] 배열로 바꾸고 숫자인 것만 answer에 누적해서 더하면 되겠지 생각했다.class Solution { public int solution(String my_string) { int answer = 0; for (char c : my_string.toCharArray()) { if (Character.isDigit(c)) answer += c; } return answer; }} 제출한 실행결과랑 기댓값 차이가 많이 나는 걸로 봐서 아스키 코드 값이 더해진 거 같다. 👨‍💻 3. 정답코드class Solution { public int so..
상단으로