Banner

My Tech Blog (정답)

오늘의 명언
📑 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..
📑 1. 문제설명💡 2. 풀이과정처음에 접근한 방식1. my_string을 toCharArray()로 char 타입의 배열로 변환2. for 문으로 배열 요소를 순회하면서 `Character.isDigit(c)` 메서드로 요소가 숫자이면 count++3. 2에서 나온 count 크기만큼의 int 배열을 선언한다. 4. for each문으로 다시 한 번 배열을 순회하면서 `Integer.parseInt(String.valueOf(c));` 로 숫자만 int 배열에 추가5. 오름차순 정렬 ⭐`Character.isDigit()`는 주어진 문자가 숫자(0~9)인지 확인하는 자바 메서드특정 문자가 숫자인지 아닌지를 판단하여, 숫자이면 true를 반환하고, 숫자가 아니면 false를 반환한다.⭐ `Inte..
📑 1. 문제설명 💡 2. 풀이과정그냥 매개변수로 받은 문자열을 toCharArray() 메서드로 배열로 변환한 뒤, 배열을 순환하며 모음이 아닐 때만 StringBuilder에 추가해주면 되는 간단한 문제이다. 단, 처음에 틀린 이유는c != 'a' && c != 'e' && c != 'i' && c != 'o' && c != 'u' 라는 조건을 설정할 때 and조건 대신 or연산자를 써서 틀렸다.  or 연산자는 하나라도 true면 전체가 true가 되기 때문이다. 결국, 어떤 문자가 들어오든 항상 true가 돼서 모음을 걸러내지 못하고 모든 문자를 추가하는 문제가 발생한다.false || false || true || false || false → 결과: **true**👨‍💻 3. 정답코드..
📑 1. 문제설명 💡 2. 풀이과정구하고자 하는 것은 직육면체 안에 정육면체 주사위가 몇 개 들어가는지이다.직육면체의 부피 / 정육면체의 부피를 계산해서 반환하면 된다. 직육면체 부피는 배열 box를 0번 인덱스부터 순회하면서 가로*세로*높이를 해서 구한다.// box 배열의 부피 계산int volume = box[0] * box[1] * box[2]; 정육면체의 부피는 n의 세제곱인데, 그냥 n*n*n; 이라고 써도 되지만두 숫자를 이용해서 거듭제곱 구하는 수학 메서드를 이용해서 코드를 작성해 주었다. `Math.pow(첫번째숫자, 두번째숫자)`첫 번째 숫자를 두 번째 숫자만큼 거듭제곱한 결과를 반환대신 Math.pow는 double형식으로 값을 리턴하기 때문에 int로 캐스팅해야한다. 👨‍💻 ..
상단으로