분류 전체보기(68)
-
[JAVA] Comparator과 Comparable에 대하여
알고리즘 문제를 풀며, 간간이 비교가 필요한 순간이 있다. primitive type같은 경우는 해당 과정이 간단하다. package com.jimkwon; public class Main { public static void main(String[] args) { int a = 3, b = 5; String str1 = "abc", str2 = "bbc"; System.out.println(a > b); System.out.println(a < b); System.out.println(str1.equals(str2)); // 설마 문자열인데 ==로 비교하진 않겠지?! } } 하지만 만약 1. 비교 대상이 객체라면? 2. 비교 대상이 Map과 같은 자료구조라면? 먼저 1번의 경우 간단한 Class를 예로..
2022.02.23 -
[프로그래머스] 카펫_JAVA
문제 링크 https://programmers.co.kr/learn/courses/30/lessons/42842 코딩테스트 연습 - 카펫 Leo는 카펫을 사러 갔다가 아래 그림과 같이 중앙에는 노란색으로 칠해져 있고 테두리 1줄은 갈색으로 칠해져 있는 격자 모양 카펫을 봤습니다. Leo는 집으로 돌아와서 아까 본 카펫의 노란색과 programmers.co.kr yellow와 brown의 타일 개수가 주어진 후, 가로 세로를 구하는 문제이다. 갈색 타일은 항상 테두리 1줄만 노란색 타일을 감싸고 있다. 중앙의 노란색 타일은 항상 사각형이다. 늘 가로가 세로보다 길거나 같다. 해당 조건을 생각해 보았을 때, 필자는 하나의 공식을 세울 수 있었다. (타일의 가로 * 세로) - (yellow 가로 * 세로) =..
2022.02.22 -
[프로그래머스] 모의고사_JAVA
문제 링크 https://programmers.co.kr/learn/courses/30/lessons/42840 코딩테스트 연습 - 모의고사 수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다. 1번 수포자가 찍는 programmers.co.kr 각 수포자가 문제를 찍는 규칙을 배열로 만들어둔다. 1번 수포자는 [1, 2, 3, 4, 5] 2번 수포자는 [2, 1, 2, 3, 2, 4, 2, 5] 3번 수포자는 [3, 3, 1, 1, 2, 2, 4, 4, 5, 5] 정답과 해당 규칙을 비교해서 각각 정답 수를 count해주면 끝 import java.util.Arrays; import java..
2022.02.22 -
[프로그래머스] H-index_JAVA
문제 링크 https://programmers.co.kr/learn/courses/30/lessons/42747 코딩테스트 연습 - H-Index H-Index는 과학자의 생산성과 영향력을 나타내는 지표입니다. 어느 과학자의 H-Index를 나타내는 값인 h를 구하려고 합니다. 위키백과1에 따르면, H-Index는 다음과 같이 구합니다. 어떤 과학자가 발표 programmers.co.kr 문제만 이해하면 금방 풀 수 있는 문제이다. 어떤 과학자가 발표한 논문 n편 중, h번 이상 인용된 논문이 h편 이상이고 나머지 논문이 h번 이하 인용되었다면 h의 최댓값이 이 과학자의 H-Index입니다. 먼저 인용 횟수로 정렬한다. citations return [3, 0, 6, 1, 5] 3 [0, 1, 3, 5,..
2022.02.22 -
[프로그래머스] 가장 큰 수_JAVA
문제 링크 https://programmers.co.kr/learn/courses/30/lessons/42746 코딩테스트 연습 - 가장 큰 수 0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 programmers.co.kr 정수를 이어 붙여 가장 큰 수를 만들기 위해서는 맨 앞자리의 숫자가 중요하다. 만약 앞자리의 숫자가 같다면 그 다음 숫자의 크기가 중요할 것이다. ex) [3, 30, 34, 5, 9] 프로그래머스 예제 3과 30을 두고 보면 3을 앞에 두는게 더 좋을 것이다. 330 vs 303 허나..
2022.02.22 -
[프로그래머스] K번째수_JAVA
문제 링크 https://programmers.co.kr/learn/courses/30/lessons/42748 코딩테스트 연습 - K번째수 [1, 5, 2, 6, 3, 7, 4] [[2, 5, 3], [4, 4, 1], [1, 7, 3]] [5, 6, 3] programmers.co.kr command 배열에는 [자를 array범위 시작, 범위 끝, K번째 수]가 들어있다. 따라서 array를 범위에 맞게 자르고, 해당 범위 내에서 K번째 수를 찾으면 되는 아주 단순한 로직 단, 코드를 좀 더 깔끔하고 효율적으로 짜길 원한다면 array를 새로 선언하고, 범위에 맞게 일일히 집어넣는 방식 보다는 copyOfRange라이브러리를 추천한다. Arrays.copyOfRange(복사할 array, 시작 ind..
2022.02.22