📑 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..
📑 1. 문제설명💡 2. 풀이과정선분이 겹치는 구간을 계산하려면, 각 좌표마다 선분이 몇 개 겹쳤는지 알아야 하므로, 좌표를 인덱스로 변환해서 카운팅 배열로 관리하는 방식으로 풀었다. 이 때 선언한 배열을 line[] 이라고 명명했는데 배열 크기 201인 이유는 문제에서 좌표의 범위가 -100부터 100까지이기 때문이다. 총 201개의 좌표가 존재한다. (0포함)자바 배열 인덱스는 0부터 시작하기 때문에 만약에 200칸만 선언하면 199번째 인덱스밖에 표현하지 못한다.그래서 크기 201짜리 int 형 배열을 선언해준다. 여기서 배열에서 선분을 표시힐 영역은 실제 lines에 들어있는 요소에서 각각 +100을 해주어야 한다. 왜냐면 배열에 마이너스 인덱스가 없기 때문에 -100+100을 해서 -100을..
📑 1. 문제설명💡 2. 풀이과정기울기 구하는 공식두 직선이 평행하려면 기울기(slope) 가 같아야 한다.두 점 (x1, y1), (x2, y2)의 기울기를 구하는 공식은 아래와 같다. 이것을 코드로 쓰면 아래와 같다.(double)(p2[1] - p1[1]) / (p2[0] - p1[0]);처음에 나는 기울기를 구할 때 오름차순 정렬을 해서 큰 수에서 작은 수를 빼야 한다고 생각했는데이 코드에서 배열을 정렬할 필요가 없다고 한다. 어떤 점을 먼저 쓰든 결과는 똑같기 때문이다. 왜냐하면 두 점의 순서를 바꾸면 분자와 분모가 모두 부호가 반대가 되기 때문이다. 점 4개로 만들 수 있는 평행한 선분쌍의 개수 처음에는 점 4개로 만들 수 있는 겹치지 않는 선분 쌍은 위 2쌍이라고 생각했는데 3쌍이 된..
📑 1. 문제설명💡 2. 풀이과정우리가 구하려는 것은 3x 마을에서 3의 배수도 아니고 숫자에 3도 안 들어간 숫자들을 n번째까지 골라서, 그 n번째 숫자가 뭐냐?를 알고 싶은 것이다. 3, 6, 9 등 3의 배수 제외13, 23 등 3의 배수는 아니더라도 숫자 자체에 3이 들어간 것은 제외num: 1 → 통과 → cnt: 1 num: 2 → 통과 → cnt: 2 num: 3 → 실패 (3의 배수) num: 4 → 통과 → cnt: 3 num: 5 → 통과 → cnt: 4 num: 6 → 실패 (3의 배수) num: 7 → 통과 → cnt: 5 → 멈춤▶ 이때 최종 num == 7, cnt == 5검사할 숫자 변수 num을 선언하고, 이를 1씩 계속 증가시키면서 조건 검사를 수행한다.만약 ..
📑 1. 문제설명💡 2. 풀이과정1. spell의 각 요소들을 이어 붙여 String으로 만든다. - `String.join("", spell)` 2. 위 String을 char[] 배열로 변환해서 오름차순 정렬한 후 다시 String으로 변환한다.3. dic 배열의 각 단어를 검사한다.이 때 단어의 길이가 같지 않으면 다음 단어로 건너뛴다.각 단어를 문자 정렬한다. (문자 배열로 전환 후 오름차순 정렬 한 뒤 다시 String으로 변환)문자열인 정렬된 spell 과 dic의 각 단어를 비교한 후 동일하다면 1 반환아니면 2 반환👨💻 3. 정답코드import java.util.*;class Solution { public int solution(String[] spell, String[] ..
📑 1. 문제설명💡 2. 풀이과정주어진 sides 배열을 오름차순 정렬한다.더 짧은 값을 shorter, 더 긴 값을 longer 변수에 저장한다.삼각형이 성립하려면, 가장 긴 변 주어진 두 변 외에 하나의 변 x를 더해 삼각형을 만들 수 있는 경우를 두 가지 상황으로 나누어 생각해볼 수 있다. 1) x가 가장 긴 변인 경우 2) x가 가장 짧은 변 or 중간일 경우 x의 가능한 정수 범위는 아래와 같다. (longer - shorter + 1) ≤ x 👨💻 3. 정답코드import java.util.*;class Solution { public int solution(int[] sides) { Arrays.sort(sides); // 배열 오름차순 정렬 int ..