문자열

    [java] 프로그래머스 (큰 수 만들기) Level 2

    Problem : https://programmers.co.kr/learn/courses/30/lessons/42883 코딩테스트 연습 - 큰 수 만들기 programmers.co.kr Approach (Wrong) 처음엔 주어진 문자열로 만들 수 있는 모든 수를 만들어 가장 큰 값을 저장해서 풀면 된다고 생각했다. 그러나 주어진 문자열의 길이가 최대 1,000,000자리 이하인 숫자이므로 당연하게 TLE, RTE를 받았다. Approach (Correct) 주어진 문자열에서 K개를 지워 가장 큰 수를 만들려면 앞자리 수가 클수록 좋다. 그렇다면 앞자리가 커질 수 있게, 앞의 수가 뒤의 수보다 작으면 삭제하면 된다. ​ -> 언제까지? K개까지만 (K개만 지울 수 있으니까) 작지 않다면 그 뒤에 붙인다...

    [java] 프로그래머스 (소수 찾기) Level 2

    Problem : https://programmers.co.kr/learn/courses/30/lessons/42839 코딩테스트 연습 - 소수 찾기 한자리 숫자가 적힌 종이 조각이 흩어져있습니다. 흩어진 종이 조각을 붙여 소수를 몇 개 만들 수 있는지 알아내려 합니다. 각 종이 조각에 적힌 숫자가 적힌 문자열 numbers가 주어졌을 때, 종이 programmers.co.kr Approach 이 문제는 머릿속으로는 풀이가 생각나지만 구현이 쉽지 않았다. 크게 두개의 단계가 필요하다. 1: 주어진 숫자로 만들 수 있는 모든 숫자를 만들어야 한다. 2: 만들어진 숫자가 소수인지를 판별해야 한다. 1번을 수행하려면 최대 nP1 + nP2 + ... + nPn-1 + nPn 번의 연산이 필요하다. 2번을 수행..

    [java] 프로그래머스 (가장 큰 수) Level 2

    Problem : https://programmers.co.kr/learn/courses/30/lessons/42746 코딩테스트 연습 - 가장 큰 수 0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 programmers.co.kr Approach 처음엔 사전정렬을 생각했었다. 그런데 사전검색으로는 반례가 생긴다. 사전 순 정렬이면 공통된 부분이 같으면 짧은 것이 먼저다. 예를들어, 333과 33같은 경우 33이 333보다 우선이다. 그러나 문제의 요구대로라면 33, 332는 33+332가 되어야하고, 33,..

    [java] 프로그래머스 (괄호 변환) Level 2

    Problem : https://programmers.co.kr/learn/courses/30/lessons/60058 코딩테스트 연습 - 괄호 변환 카카오에 신입 개발자로 입사한 콘은 선배 개발자로부터 개발역량 강화를 위해 다른 개발자가 작성한 소스 코드를 분석하여 문제점을 발견하고 수정하라는 업무 과제를 받았습니다. 소스를 컴 programmers.co.kr Approach 2020 KAKAO BLIND RECRUITMENT 문제이다. 딱히 접근법이 없다. 문제에 나와있는 조건들을 순서대로 구현하면 된다. 주의할 점은 4-4 의 괄호방향을 뒤집는다 이다. 단지 괄호방향만 뒤집을 뿐 문자열의 역순을 취하면 안된다. 1. 입력이 빈 문자열인 경우, 빈 문자열을 반환합니다. 2. 문자열..

    [java] 프로그래머스 (문자열 압축) Level 2

    Problem : https://programmers.co.kr/learn/courses/30/lessons/60057 코딩테스트 연습 - 문자열 압축 데이터 처리 전문가가 되고 싶은 어피치는 문자열을 압축하는 방법에 대해 공부를 하고 있습니다. 최근에 대량의 데이터 처리를 위한 간단한 비손실 압축 방법에 대해 공부를 하고 있는데, 문자 programmers.co.kr Approach 2020 KAKAO BLIND RECRUITEMENT 문제로, 문자열을 처리하는 문제이다. 최대로 문자열을 압축하여, 그 길이를 반환하여야 한다. 압축 단위는 최대 원래 문자열 크기의 반이다. 알고리즘 자체는 쉽지만, 여러 테스트케이스들을 고민해 봐야한다. 예를 들어, x....x처럼 x가 100개인 경우의 최소길이는 4이..

    [java] 프로그래머스 (스킬트리) Level 2

    문제 원문 링크 : https://programmers.co.kr/learn/courses/30/lessons/49993 코딩테스트 연습 - 스킬트리 programmers.co.kr Approach String skill = "CBD"; String[] skill_trees = {"BACDE", "CBADF", "AECB", "BDA"}; skill_trees 에 있는 각각의 문자들이 skill.contains() 메소드를 활용하여 skill 에 들어있는지를 검사한다. 만약 들어있지 않다면 빈 문자열("")로 replace 한다. 위의 과정을 거치면 "BCD", "CBD", "CB", "BD" 가 된다. 그리고 위의 문자열들을 skill 의 0번째에서 찾을 수 있다면 문제에서 순서대로만 스킬을 배울 수 ..