본문 바로가기

분류 전체보기

(433)
프로그래머스 - 문자열 압축(Java, 2020 카카오) https://programmers.co.kr/learn/courses/30/lessons/60057# 코딩테스트 연습 - 문자열 압축 데이터 처리 전문가가 되고 싶은 어피치는 문자열을 압축하는 방법에 대해 공부를 하고 있습니다. 최근에 대량의 데이터 처리를 위한 간단한 비손실 압축 방법에 대해 공부를 하고 있는데, 문자 programmers.co.kr 풀이 전체 문자열 길이가 1000 밖에 안되기에 O(N^2)로 풀어도 상관없음 주어진 조건을 따라서 구현하기 문자열을 길이 기준(i)을 1
프로그래머스 - 삼각 달팽이(Java, LV2) https://programmers.co.kr/learn/courses/30/lessons/68645 코딩테스트 연습 - 삼각 달팽이 5 [1,2,12,3,13,11,4,14,15,10,5,6,7,8,9] 6 [1,2,15,3,16,14,4,17,21,13,5,18,19,20,12,6,7,8,9,10,11] programmers.co.kr 풀이 쉬운 문제처럼 보였으나 규칙성을 찾는데 생각보다 오래걸렸다... 수학 규칙을 추론하고 검증하는데 조금 무뎌진거 같은 느낌이었다. 기본적으로 전체 큰 삼각형의 특성을 살펴보면 된다. 왼쪽아래 대각선으로 내려오거나(Down) 오른쪽으로 지나가거나(Side) 왼쪽위 대각선으로 올라가거나(Up) 세 가지 중 하나이다. 그리고 각 방향의 길이는 n, n-1, n-2, ....
프로그래머스 - 스킬트리(Java, LV2) https://programmers.co.kr/learn/courses/30/lessons/49993?language=java 코딩테스트 연습 - 스킬트리 programmers.co.kr 풀이 주어진 skill_tree String 배열에 대해서 주어진 skill String 만큼 반복문을 돌면서 탐색한다. skill 순서에 따라 검사하는데 선행스킬과 후행스킬의 순서를 고려한다. 1) 선행 스킬을 배우지 않고 후행 스킬을 배운 경우 -> 비정상 2) 선행 스킬을 후행 스킬 뒤에 배운 경우 -> 비정상 class Solution { public int solution(String skill, String[] skill_trees) { int answer = 0; // skil의 값들을 skill_tree에..
프로그래머스 - 124 나라의 숫자(Java, LV2) https://programmers.co.kr/learn/courses/30/lessons/12899 코딩테스트 연습 - 124 나라의 숫자 programmers.co.kr풀이10 진수124 진수10 진수124 진수11124422131113414112411151145121612161417122721181248221914192420142104121144114222211 쉬운 듯 어려운 듯, 너무 어렵게 풀어서 결국 쉬운 풀이를 찾아봤다.풀이의 핵심은 3진법을 생각하는데 조금 차이를 이해하는 것이다. 기본적인 3진법: 0, 1, 2, 10, 11, 12 , 20, 21, 22124의 나라 3진법: 1, 2, 4, 11, 12, 14, 21, 22, 24, 41, 42, 44 차이점이 보인다. 바로 자리숫자에..
프로그래머스 - 경주로 건설(Java, LV3, 2020 카카오) https://programmers.co.kr/learn/courses/30/lessons/67259 코딩테스트 연습 - 경주로 건설 [[0,0,0,0,0,0,0,1],[0,0,0,0,0,0,0,0],[0,0,0,0,0,1,0,0],[0,0,0,0,1,0,0,0],[0,0,0,1,0,0,0,1],[0,0,1,0,0,0,1,0],[0,1,0,0,0,1,0,0],[1,0,0,0,0,0,0,0]] 3800 [[0,0,1,0],[0,0,0,0],[0,1,0,1],[1,0,0,0]] 2100 [[0,0,0,0,0,0],[0,1,1,1,1,0],[0,0,1,0,0,0],[1,0,0,1,0,1],[ programmers.co.kr 틀린 풀이 처음에 생각했던 풀이는 다음과 같다(틀린풀이 주의) BFS로 최단 경로 탐색..
프로그래머스 - 방문길이(Java, LV3) https://programmers.co.kr/learn/courses/30/lessons/49994 코딩테스트 연습 - 방문 길이 programmers.co.kr 풀이 시뮬레이션 문제로 전체 시뮬레이션 대상의 크기는 크지 않지만 조건들을 놓치기 쉬운 부분이 있는 문제였다. 2차원 배열로 방문했는지 안했는지 체크 -> X 3차원 배열로 해당 지점에 방문할 때 어느 방향에서 와서 방문한 길인지 체크 -> O 방문한 길이라고 했기 때문에 새로 방문했을 경우만 길이를 체크하는 것이 아니라 한 지점에 대해 4방의 길이를 생성할 수 있기에 그 부분을 주의해야 한다. 추가적으로 4방의 길이를 체크함에 있어 기존위치 -> 신규위치로 변할때 기존위치의 U 방향과 신규의치의 D 방향은 결국 같은 길 인점을 주의해야한다...
프로그래머스 - 숫자게임(Java, LV3) https://programmers.co.kr/learn/courses/30/lessons/12987 코딩테스트 연습 - 숫자 게임 xx 회사의 2xN명의 사원들은 N명씩 두 팀으로 나눠 숫자 게임을 하려고 합니다. 두 개의 팀을 각각 A팀과 B팀이라고 하겠습니다. 숫자 게임의 규칙은 다음과 같습니다. 먼저 모든 사원이 무작위로 � programmers.co.kr 풀이 처음 풀었던 풀이 A 팀과 B 팀을 전부 오름 차순으로 정렬한다. 앞에서부터 A팀의 패를 이길 수 있는 B팀의 패를 찾는다. 이길 수 있는 패를 찾았을 경우, B팀 내에서 이번 대결의 상대를 탐색하는 것은 중단한다. 이길 수 있는 패를 찾았을 경우, INF 상수를 통해 마킹하여 다음 대결에 사용하지 않는다. 이 때, 오름차순 정렬으로 되어..
프로그래머스 - 섬 연결하기(Java, LV3) / MST https://programmers.co.kr/learn/courses/30/lessons/42861?language=java 코딩테스트 연습 - 섬 연결하기 4 [[0,1,1],[0,2,2],[1,2,5],[1,3,1],[2,3,8]] 4 programmers.co.kr 풀이 해당 문제는 graph의 MST(Minimum Spanning Tree) 최소연결간선 트리 찾기 문제로 크루스칼 알고리즘으로 해결 가능하다. 먼저, 주어진 전체 costs를 비용 순으로 정렬 후 사이클체크를 하면서 사이클이 형성되지 않는다면 해당 간선을 연결한다. 연결하면서 두 노드를 union 해준다. 그렇게 전체 costs를 탐색하면서 MST가 구성되었다면 중단하여 지금까지 계산한 비용을 반환한다. import java.uti..