본문 바로가기

분류 전체보기225

코딩테스트 연습 > 뒤에 있는 큰 수 찾기 - JAVA https://school.programmers.co.kr/learn/courses/30/lessons/154539 풀이 - 나의 생각 뒤에 있는 나보다 큰 수를 찾는 것이기 때문에 뒤에서부터 찾으면 수월할 거라고 생각을 했다. 최악의 경우 1, 1, 1 , 1 , 1 , 1 , 1 , 1 --------------------------, 9 이런 경우 단순히 반복문으로 i = 0,1,2,3 --- n-1 의 경우 i = n 까지 뒤져 봐야 하는데 너무 비효율적이라고 생각했기 때문이다. 결국 문제는 나보다 큰 수가 어디 있을지 모르는 것이다. 그래서 뒤에서부터 찾기로 했다. Stack을 사용(여기서는 Deque를 사용했지만)해서 값들을 저장하는데 나보다 큰 값을 찾을 때까지 Stack에 있는 값들을 다 .. 2024. 1. 9.
코딩테스트 연습 > 모음사전 - JAVA https://school.programmers.co.kr/learn/courses/30/lessons/84512 풀이 - 나의 생각 이런 문제는 수학적으로 푸는게 가장 좋다. 주어진 문자열이 사전에서 몇번째에 위치하는지를 찾는다. 예로 단어 순서 A 1 AA 2 AAAAA 5 AAAAE 6 AAAE 10 이런식이다. 5자리가 최대로 A부터 시작해서 UUUUU로 끝난다. AAAAA, AAAAE, AAAAI, AAAAO, AAAAU 이렇게 A, E, I, O, U 순으로 진행되는데 자릿수에 따라 1 + i( A, E, I, O, U 순서)* 5 로 단어의 위치가 증가하는 것을 볼 수 있다. 781, 156, 31, 6, 1 이런 방식으로 증가합니다. 5의 자리는 1씩 증가 예) AAAAA = 5, AAAA.. 2024. 1. 7.
2018 KAKAO BLIND RECRUITMENT > [3차] 압축 - JAVA https://school.programmers.co.kr/learn/courses/30/lessons/17684 풀이 - 나의 생각 1. List에 알바벳 A ~ Z를 넣는다. 2. LZW 압축 진행 2-1. 주어진 문자열을 한글자씩 가져온다. (현재 문자열이 W, 다음 문자열 C) 2-2. W+C가 List에 있는지 확인 Y -> W = W+C, C는 원래 C의 다음 문자열, 2-2로 N -> List에 W를 넣고 List에서 W의 위치를 answer에 저장, 2-1로 1은 그냥 for문으로 알파벳을 넣어줬다. 다른 좋은 방법 아시는 분은 댓글 부탁드립니다. W, C는 W+C가 List에 있으면 계속해서 쌓여간다. 예를 들어 W+C가 계속해서 List에 없었던 문자라고 가정을 하겠다. No. W C .. 2024. 1. 6.
코딩테스트 연습 > 이중우선순위큐 - JAVA https://school.programmers.co.kr/learn/courses/30/lessons/42628 풀이 - 나의 생각 PriorityQueue를 2개 쓰면 된다. (한개는 최솟값, 한개는 최댓값을 위한) PriorityQueue는 기본적으로는 오름차순으로 정렬된다. 내림차순을 원한다면 PriorityQueue pq = new PriorityQueue((a, b) -> Integer.compare(b, a)); 이런식으로 해줘야 한다. 코드 import java.util.*; class Solution { public int[] solution(String[] operations) { PriorityQueue maxQueue = new PriorityQueue((a, b) -> Intege.. 2024. 1. 5.
2022 KAKAO BLIND RECRUITMENT > k진수에서 소수 개수 구하기 - JAVA https://school.programmers.co.kr/learn/courses/30/lessons/92335 풀이 - 나의 생각 1. 주어진 int n을 K진수로 바꾸기 2. 조건에 맞춰 숫자 자르기 3. 그 숫자가 소수인지 확인하기 1은 Integer.toString(int n, int k) -> n을 k진수로 변환하여 String 형으로 반환한다. 2는 String.split("0+") -> 0 또는 연속된 0을 기준으로 문자열을 분환해줌 3은 에라토스테네스의 체를 활용했는데 원래는 n까지 소수의 개수를 찾는 방식이지만 이번에는 n이 소수인지 아닌지 판별하는 방식으로 사용했다. 코드 import java.util.*; class Solution { public int solution(int n,.. 2024. 1. 4.
Character 메소드 활용 type Method Description boolean isDigit(char ch) Determines if the specified character is a digit. 숫자면 true, 아니면 false 반환 boolean isAlphabetic(int codePoint) Determines if the specified character (Unicode code point) is an alphabet. boolean isLetter(char ch) Determines if the specified character is a letter. 알파벳(영문 알파벳 대소문자) 또는 다른 언어의 문자인 경우에도 true를 반환, 숫자나 특수 문자, 공백이면 false char toLowerCase(cha.. 2024. 1. 4.