문제 풀이/Java
[프로그래머스] 2020 KAKAO BLIND RECRUITMENT - "문자열 압축" (Java)
[프로그래머스] 2020 KAKAO BLIND RECRUITMENT - "문자열 압축" (Java)
2021.09.08https://programmers.co.kr/learn/courses/30/lessons/60057?language=javascript 코딩테스트 연습 - 문자열 압축 데이터 처리 전문가가 되고 싶은 "어피치"는 문자열을 압축하는 방법에 대해 공부를 하고 있습니다. 최근에 대량의 데이터 처리를 위한 간단한 비손실 압축 방법에 대해 공부를 하고 있는데, 문 programmers.co.kr 난이도 : Level 2 제가 생각한 로직은 아래와 같습니다. 1. 절반까지만 탐색한다. (절반이 넘어가면 반복되는 문자열이 없기 때문.) 2. 문자열에서 범위를 정하여 각 범위만큼 비교 문자열을 생성한다 (String slice) 3. s 문자열에서 비교 문자열 뒤로 target 문자열을 비교하며 임시 문자열을 만들어..
[프로그래머스] 2020 KAKAO BLIND RECRUITMENT - "괄호 변환" (Java)
[프로그래머스] 2020 KAKAO BLIND RECRUITMENT - "괄호 변환" (Java)
2021.09.07https://programmers.co.kr/learn/courses/30/lessons/60058 코딩테스트 연습 - 괄호 변환 카카오에 신입 개발자로 입사한 "콘"은 선배 개발자로부터 개발역량 강화를 위해 다른 개발자가 작성한 소스 코드를 분석하여 문제점을 발견하고 수정하라는 업무 과제를 받았습니다. 소스를 programmers.co.kr 난이도 : Level 2 문제에서 구현 조건이 주어졌기에, 적절한 자료구조를 사용한 구현 능력을 요구하는 문제인 것 같습니다. 카카오는 주로 수학적인 알고리즘 능력을 요하는 것이 아닌, 자료구조를 활용한 구현 능력을 더 중요하게 보는 것 같습니다. 다음과 같은 로직으로 문제를 해결하였습니다. 1. 올바른 괄호 문자열인지 판별하는 함수를 구현할 것. 2. 문제 조건..
[프로그래머스] 2021 KAKAO BLIND RECRUITMENT - "광고 삽입" (Java)
[프로그래머스] 2021 KAKAO BLIND RECRUITMENT - "광고 삽입" (Java)
2021.09.07https://programmers.co.kr/learn/courses/30/lessons/72414 코딩테스트 연습 - 광고 삽입 시간을 나타내는 HH, H1, H2의 범위는 00~99, 분을 나타내는 MM, M1, M2의 범위는 00~59, 초를 나타내는 SS, S1, S2의 범위는 00~59까지 사용됩니다. 잘못된 시각은 입력으로 주어지지 않습니다. (예: 04:60:24, 11 programmers.co.kr 난이도 : Level 3 슬라이딩 윈도우 알고리즘을 활용하여 문제를 해결하였습니다. 이 문제는 의도하는 로직을 떠올리는 것이 관건이라고 생각합니다. String으로 주어진 시간 정보를 초 단위로 환산하는 것은 간단할 수 있지만 이들을 활용하여 탐색을 하는 과정은 고민이 필요한 문제라고 생각합..
[프로그래머스] 2021 KAKAO BLIND RECRUITMENT - "합승 택시 요금" (Java) (dijkstra, floydWarshall)
[프로그래머스] 2021 KAKAO BLIND RECRUITMENT - "합승 택시 요금" (Java) (dijkstra, floydWarshall)
2021.09.07https://programmers.co.kr/learn/courses/30/lessons/72413 코딩테스트 연습 - 합승 택시 요금 6 4 6 2 [[4, 1, 10], [3, 5, 24], [5, 6, 2], [3, 1, 41], [5, 1, 24], [4, 6, 50], [2, 4, 66], [2, 3, 22], [1, 6, 25]] 82 7 3 4 1 [[5, 7, 9], [4, 6, 4], [3, 6, 1], [3, 2, 3], [2, 1, 6]] 14 6 4 5 6 [[2,6,6], [6,3,7], [4,6,7], [6,5,11], [2,5,12], [5,3,20], [2,4 programmers.co.kr 난이도 : Level 3 그래프에서 최단 경로 알고리즘인 플로이드 - 와샬과 다익스..
[프로그래머스] 2021 KAKAO BLIND RECRUITMENT - "순위 검색" (Java)
[프로그래머스] 2021 KAKAO BLIND RECRUITMENT - "순위 검색" (Java)
2021.09.06https://programmers.co.kr/learn/courses/30/lessons/72412 ( 여기까지 하면 정확성은 다 맞출수 있습니다. ) 4. 이분 탐색을 통하여 query에 주어진 점수보다 낮은 점수가 존재하는 index를 start에 저장. - static HashMap map = new HashMap(); Map의 Key 값으로 "-" 표시를 포함한 모든 경우의 String 값을 저장합니다. info 배열의 “java and backend and junior and pizza 150″ 이라는 String을 탐색할 경우, Key 값으로 "----" 부터 "javabackendjuniropizza"까지 총 16가지의 경우의 수가 저장됩니다. ArrayList에는 점수가 저장됩니다. 이미..
[프로그래머스] 2021 KAKAO BLIND RECRUITMENT - "신규 아이디 추천" (Java)
[프로그래머스] 2021 KAKAO BLIND RECRUITMENT - "신규 아이디 추천" (Java)
2021.09.05https://programmers.co.kr/learn/courses/30/lessons/72410 코딩테스트 연습 - 신규 아이디 추천 카카오에 입사한 신입 개발자 네오는 "카카오계정개발팀"에 배치되어, 카카오 서비스에 가입하는 유저들의 아이디를 생성하는 업무를 담당하게 되었습니다. "네오"에게 주어진 첫 업무는 새로 programmers.co.kr 난이도 : Level1 카카오에서 자주 출제되는 유형인 문자열 다루는 문제입니다. String 클래스의 메소드와 정규표현식을 잘 사용한다면 굉장히 쉽게 풀 수 있는 문제이지만, 정규표현식을 잘 모른다면 시간이 좀 걸릴 것 같습니다. 문제에 주어진 각 단계의 조건에 맞춰서 문제를 해결해 나가면 풀 수 있습니다. 1단계) 소문자로 치환 -> toLowerCa..
[백준] 14503번 - "로봇 청소기" (Java)
[백준] 14503번 - "로봇 청소기" (Java)
2021.02.28www.acmicpc.net/problem/14503 14503번: 로봇 청소기 로봇 청소기가 주어졌을 때, 청소하는 영역의 개수를 구하는 프로그램을 작성하시오. 로봇 청소기가 있는 장소는 N×M 크기의 직사각형으로 나타낼 수 있으며, 1×1크기의 정사각형 칸으로 나누어 www.acmicpc.net 문제 설명 로봇 청소기가 주어졌을 때, 청소하는 영역의 개수를 구하는 프로그램을 작성하시오. 로봇 청소기가 있는 장소는 N×M 크기의 직사각형으로 나타낼 수 있으며, 1×1크기의 정사각형 칸으로 나누어져 있다. 각각의 칸은 벽 또는 빈 칸이다. 청소기는 바라보는 방향이 있으며, 이 방향은 동, 서, 남, 북중 하나이다. 지도의 각 칸은 (r, c)로 나타낼 수 있고, r은 북쪽으로부터 떨어진 칸의 개수, c는..
[백준] 14502번 - "연구소" (Java)
[백준] 14502번 - "연구소" (Java)
2021.02.27www.acmicpc.net/problem/14502 14502번: 연구소 인체에 치명적인 바이러스를 연구하던 연구소에서 바이러스가 유출되었다. 다행히 바이러스는 아직 퍼지지 않았고, 바이러스의 확산을 막기 위해서 연구소에 벽을 세우려고 한다. 연구소는 크 www.acmicpc.net - 난이도 : 골5 dfs와 bfs를 공부를 조금 했다면 충분히 풀 수 있는 문제라고 생각합니다. dfs, bfs 둘 다 활용해서 풀 수 있고 dfs만 활용하여 풀 수도 있습니다. 간단하게 먼저 설명하자면, 재귀 호출을 이용하여 map 배열을 탐색하며 벽을 3개 세웁니다. 탐색은 map 배열로 하지만, 바이러스 퍼트리기는 copy 배열로 진행합니다. 벽을 3개 세웠으면, bfs 탐색을 통해 바이러스를 퍼트립니다. 퍼트린 바..
[백준] 15681번 - "트리와 쿼리" (Java)
[백준] 15681번 - "트리와 쿼리" (Java)
2021.02.26www.acmicpc.net/problem/15681 15681번: 트리와 쿼리 트리의 정점의 수 N과 루트의 번호 R, 쿼리의 수 Q가 주어진다. (2 ≤ N ≤ 105, 1 ≤ R ≤ N, 1 ≤ Q ≤ 105) 이어 N-1줄에 걸쳐, U V의 형태로 트리에 속한 간선의 정보가 주어진다. (1 ≤ U, V ≤ N, U ≠ V) www.acmicpc.net 난이도 : 골5 트리 연습하기 좋은 문제라고 생각합니다. 트리 만드는 법을 배울 수 있습니다. 그리고 이 문제도 테스트 케이스 문제라서 각 테스트 케이스마다 문제를 해결하고자 하면 시간 초과가 날 수 있습니다. 미리 문제를 다 풀고 테스트 케이스 별로 결과만 출력하는 것을 추천합니다. 이 문제는 힌트가 아주 잘 나와있어 힌트에 나와있는 의사코드(ps..