Banner

My Tech Blog (자바)

오늘의 명언
📑 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) { ..
📑 1. 문제설명💡 2. 풀이과정1. score 배열을 순회하며 영어 점수와 수학 점수의 평균을 구한다.score[i][0] = 영어 점수score[i][1] = 수학 점수평균: (score[i][0] + score[i][1]) / 2.0이 때 2로 나누면 정수 계산이 되므로 2.0 으로 나누어야 double 타입이 반환된다. 이것을 double[] avg 배열에 담는다. 2. 등수 계산하기각 학생 평균을 기준으로 자기보다 높은 평균 점수가 몇 개인지 세어서 rank[i]에 저장한다.이 때 cnt가 1부터 시작한다.cnt = 1 일때 1등이면 1등보다 높은 점수인 사람은 0명이므로 1+0 = 1cnt = 1 일때 2등이면 2등보다 높은 점수인 사람은 1명이므로 1+1 = 2이 값을 int[] rank..
📑 1. 문제설명💡 2. 풀이과정comparator로 커스텀 정렬을 할건데 이 때 int[] 배열을 먼저 Integer[] 로 변환해 주어야만 comparator을 쓸 수 있다.comparator 쓸 때는 아래 형식과 정렬 기준만 기억하고 있으면 된다. Arrays.sort(배열, (a, b) -> { 기준에 따라 return 값 설정 }); Comparator 정렬기준반환값뜻정렬 결과음수 (a a가 b보다 앞에 온다0a == b순서 그대로양수 (> 0)a > bb가 a보다 앞에 온다오름차순: a - b 내림차순: b - a 절댓값: Math.abs(a) - Math.abs(b) 복합 조건: if/else 사용 1. 오름차순 정렬 (작은 수 → 큰 수)Arrays.sort(arr, (a,..
📑 1. 문제설명💡 2. 풀이과정아주 쉽게 풀 수 있는 문제 같았다.유클리드 호제법으로 a와 b의 최대공약수(GCD)를 구하기이 때 최대공약수(gcd-greatest common divisor)구하는 메서드는 따로 선언해 주었다.분모 b를 최대공약수로 나눈 값을 2또는 5로 나눈 나머지가 0이면 return 1, 아니면 return 2 처음 제출한 코드class Solution { public int gcd(int a, int b) { if (b == 0) return a; return gcd(b, a % b); } public int solution(int a, int b) { int g = gcd(a, b); int num = (i..
상단으로