본문 바로가기

Archived(CSE Programming)

(169)
프로그래머스 - 소수 찾기(파이썬, LV2, 완전탐색) https://programmers.co.kr/learn/courses/30/lessons/42839?language=python3# 코딩테스트 연습 - 소수 찾기 한자리 숫자가 적힌 종이 조각이 흩어져있습니다. 흩어진 종이 조각을 붙여 소수를 몇 개 만들 수 있는지 알아내려 합니다. 각 종이 조각에 적힌 숫자가 적힌 문자열 numbers가 주어졌을 때, 종이 programmers.co.kr 풀이 파이썬의 itertools의 permutation을 통해서 쉽게 구현이 가능했다. 먼저 모든 순열을 다 고려하는데, 만들어진 순열 String을 Integer로 변경하고 해당 Integer가 소수 Prime 인지 체크해서 개수를 카운트해주면 된다. 이 때, 중복 값 방지를 위해 개수 카운트 시 집합을 활용한다...
프로그래머스 - 문자열 압축(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 상수를 통해 마킹하여 다음 대결에 사용하지 않는다. 이 때, 오름차순 정렬으로 되어..