본문 바로가기

전체 글124

[Algorithm] 2020 KAKAO BLIND RECRUITMENT 문자열 압축 문제 설명 데이터 처리 전문가가 되고 싶은 "어피치"는 문자열을 압축하는 방법에 대해 공부를 하고 있습니다. 최근에 대량의 데이터 처리를 위한 간단한 비손실 압축 방법에 대해 공부를 하고 있는데, 문자열에서 같은 값이 연속해서 나타나는 것을 그 문자의 개수와 반복되는 값으로 표현하여 더 짧은 문자열로 줄여서 표현하는 알고리즘을 공부하고 있습니다. 간단한 예로 "aabbaccc"의 경우 "2a2ba3c"(문자가 반복되지 않아 한번만 나타난 경우 1은 생략함)와 같이 표현할 수 있는데, 이러한 방식은 반복되는 문자가 적은 경우 압축률이 낮다는 단점이 있습니다. 예를 들면, "abcabcdede"와 같은 문자열은 전혀 압축되지 않습니다. "어피치"는 이러한 단점을 해결하기 위해 문자열을 1개 이상의 단위로 잘.. 2023. 7. 19.
개인정보처리방침(참 잘했어요) 1. 개인정보의 처리 목적 (‘junyoeng.tistory.com/’이하 ‘참 잘했어요’) 은(는) 다음의 목적을 위하여 개인정보를 처리하고 있으며, 다음의 목적 이외의 용도로는 이용하지 않습니다. - 고객 가입의사 확인, 고객에 대한 서비스 제공에 따른 본인 식별.인증, 회원자격 유지.관리, 물품 또는 서비스 공급에 따른 금액 결제, 물품 또는 서비스의 공급.배송 등 2. 개인정보의 처리 및 보유 기간 ① (‘junyoeng.tistory.com/’이하 ‘참 잘했어요’) 은(는) 정보주체로부터 개인정보를 수집할 때 동의 받은 개인정보 보유․이용기간 또는 법령에 따른 개인정보 보유․이용기간 내에서 개인정보를 처리․보유합니다. ② 구체적인 개인정보 처리 및 보유 기간은 다음과 같습니다. ☞ 아래 예시를 .. 2023. 3. 25.
[Algorithm] 소수 구하기 2부터 N까지 소수 구하는 법 1. 2부터 N까지 하나 하나 나눠보며 구함 2. 3부터 N까지 홀수의 경우만 소수의 제곱근 보다 작은지 확인하면서 작은 경우 나눠보며 구함 3. 에라토스테네스의 체, 2, 3, 5, 7의 배수를 제외한 값을 구함 (N 120이므로) 4. 3부터 N까지 홀수의 경우만 소수를 담은 배열(index0: 2)을 이용해 나누어 떨어지는지 확인 후 나누어지지 않으면 소수 배열에 담아 앞에서 한 것을 반복해서 구함 5. 5부터 N까지 홀수의 경우만 소수를 담은 배열(index0: 2, index1: 3)을 이용해 소수의 제곱근보다 큰지 확인하고 크지 않으면 해당 소수로 나머지 연산해보고 소수의 경우만 배열에 담음 이 것을 반복 2, 3,.. 2021. 4. 1.
[Algorithm] Chapter02 연습문제 Q1~Q7 Q1 키뿐만 아니라 사람 수도 난수로 생성하도록 실습 2-5를 수정하여 프로그램을 작성하시오. import java.util.Random; public class Chap_02_q_01_tallest { public static void main(String[] args) { Random random = new Random(); System.out.println("키의 최댓값을 구합니다."); System.out.print("사람 수: "); int num = random.nextInt(10)+1; int[] height = new int[num]; System.out.println("키 값은 아래와 같습니다."); for(int i = 0; i < num; i++){ height[i] = 100 + r.. 2021. 3. 31.
[Algorithm] 각 타입의 초깃값, 배열 복제 Java 형 초깃값 byte (byte) 0 short (short) 0 int 0 long 0L float 0.0f double 0.0d char '\u0000' boolean false reference 형 ex) String "" 또는 null 배열 복제 코드 import java.util.Arrays; public class Chap_02_exercise_2_3 { public static void main(String[] args) { int [] a = {1, 2, 3, 4, 5}; int [] b = a; int [] c; System.out.println("-------------- a = b --------------"); System.out.println("a: " + Arrays.toStrin.. 2021. 3. 31.
[Algorithm] Chapter01 연습문제 Q12 ~ Q17 Q12 오른쪽과 같이 위쪽과 왼쪽에 곱하는 수가 있는 곱셈표를 출력하는 프로그램을 작성하시오. (구분선은 수직선 기호(|), 마이너스기호(-), 플러스 기호(+)를 사용하세요.) public class chap_01_q12_gugudan_chart { private static final int [] gugudan = {1, 2, 3, 4, 5, 6, 7, 8, 9}; public static void main(String[] args) { System.out.print("\t| "); for (int k : gugudan) { System.out.printf("%2d ", k); } System.out.println("\n----+---------------------------"); for (int .. 2021. 3. 30.
[Algorithm] 논리합, 논리곱, 드모르간 법칙 1. 논리곱 (&&) x y x && y true true true true false false false true false false false false 2. 논리합 (||) x y x || y true true true true false true false true true false false false 3. 드모르간 법칙 '각 조건을 부정하고 논리곱을 논리합으로, 논리합을 논리곱으로 바꾸고 다시 전체를 부정하면 원래의 조건과 같다.' ex) x && y == !(!x || !y) x || y == !(!x && !y) (x 99) == !(x >= 10 && x x는 10미만 100 이상이다. 2021. 3. 30.
[Algorithm] Chapter01 연습문제 Q4 ~ Q5 p22 Q4 세 값의 대소 관계 13종류의 모든 조합에 대해 중앙값을 구하여 출력하는 프로그램을 작성하세요. 내 답안 import java.util.Arrays; import java.util.Random; public class chap_01_q4_med3 { public static void main(String[] args) { int arr[] = new int[7]; int repeat = 1; for(int i = 0; i < arr.length; i++){ if(i != 0 && i % (arr.length-1) == 0) { System.out.println("배열은 " + Arrays.toString(arr) + "이며"); System.out.println("중간 값은 " + med(arr) .. 2021. 3. 27.
[Algorithm] 프로그래머스 가장 큰 수(2) - Kotlin 이전 글 프로그래머스 가장 큰 수(1) - Kotlin 프로그래머스의 정렬 문제 중 Level 2문제인 가장 큰 수에 대해 정리해보려 한다. 코딩 테스트 연습 - 가장 큰 수 | 프로그래머스 (programmers.co.kr) 코딩테스트 연습 - 가장 큰 수 0 또는 양의 정수가 junyoeng.tistory.com 이번 포스팅에선 다른 분들이 만든 성공 케이스를 두 가지 정도 뽑아서 정리해보려 한다. 먼저 첫 번째로 sortedWith()를 이용해 숫자를 문자열로 앞 뒤로 교차해서 비교한 뒤 정리하고 정리가 끝난 후에 forEach()를 통해 인덱스 순서대로 하나 씩 더해서 문자열을 완성시키는 방식으로 해결하고 있다. 0이 반복적으로 나오는 경우를 처리하기 위해 '0'으로 시작하는 문자열이 있으면 "0.. 2021. 3. 27.
반응형