본문 바로가기

취준/프로그래머스

[프로그래머스 Programmers][Python] 카드 게임 (3/13 수정) 문제 : https://programmers.co.kr/learn/courses/30/lessons/42896 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr (3/13 이후 테스트케이스가 추가되었습니다. 따라서 기존 풀이로는 풀리지 않습니다.) DP 단골 문제 길찾기에서 방향만 하나 더해지는 거니까 어렵지 않게 풀 수 있다. 어려웠다. 댓글에서 알려주신 [2,1,1], [3,1,1] 예시를 들면 예전 코드에서는 2가 나온다. 그런데 2가 나올려면 (2,3) 상황에서 오른쪽의 3을 버려야 각각 1,1 을 버릴 수 있게 되어 2가 나온다. 근데 이건 불가능하.. 더보기
[프로그래머스 Programmers][Python] 네트워크 문제 : https://programmers.co.kr/learn/courses/30/lessons/43162 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr DFS 문제다. 기본적으로 DFS 싫어하기도 하고, 파이썬에서는 dfs로 잘못풀다가는 스택 제한걸려서 터지는게 다반사라서 BFS로 풀다가 안됨. DFS를 기본적으로 쓰는거 같길래 보고 써봤다. 풀고나서 보니까 다른사람들은 BFS잘만 쓰더라. from collections import deque def dfs(v,c, start,n): v[start] = True for i in range(n): if.. 더보기
[프로그래머스 Programmers][Python] 단어 변환 문제 : https://programmers.co.kr/learn/courses/30/lessons/43163 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr BFS 문제다. onemissing 은 일단 한글자가 다른가를 확인하는 함수이다. 그 다음 일반적인 bfs처럼, 단어를 순회하면서 한글자만 다른지 onemissing으로 확인한다. 물론 중복체크를 위해 dict v를 사용한다. 그리고 큐에 (단어, 사용 횟수)를 적고, 단어가 target이 되면 답을 반환한다. from collections import deque def onemissing(a,b,n.. 더보기
[프로그래머스 Programmers][Python] 종이접기 문제 : https://programmers.co.kr/learn/courses/30/lessons/62049 코딩테스트 연습 - 종이접기 | 프로그래머스 직사각형 종이를 n번 접으려고 합니다. 이때, 항상 오른쪽 절반을 왼쪽으로 접어 나갑니다. 다음은 n = 2인 경우의 예시입니다. 먼저 오른쪽 절반을 왼쪽으로 접습니다. 다시 오른쪽 절반을 왼쪽으로 접습니다. 종이를 모두 접은 후에는 종이를 전부 펼칩니다. 종이를 펼칠 때는 종이를 접은 방법의 역순으로 펼쳐서 처음 놓여있던 때와 같은 상태가 되도록 합니다. 위와 같이 두 번 접은 후 종이를 펼치면 아래 그림과 같이 종이에 접은 흔적이 생기게 됩니다. 위 programmers.co.kr 구현 문제다. 종이를 오른쪽으로 반 접으면, 가운데에는 V가 생긴다.. 더보기
[프로그래머스 Programmers][Python] 자물쇠와 열쇠 문제 : https://programmers.co.kr/learn/courses/30/lessons/60059 코딩테스트 연습 - 자물쇠와 열쇠 | 프로그래머스 [[0, 0, 0], [1, 0, 0], [0, 1, 1]] [[1, 1, 1], [1, 1, 0], [1, 0, 1]] true programmers.co.kr 깡으로 구현해야한다. 우선 맵을 2*len(key) + len(lock) 으로 확장한 뒤에 arr[M][M] 에서부터 lock을 복사해 놓는다. 이제부터는 순서가 중요하다. 아까의 arr 맵을 복사해 tmparr 에 넣는다. key + lock 사이즈 동안 for문을 돌린다. key를 tmpkey에 복사해놓는다. tmpkey를 90도씩 4번 돌릴 수 있게 for문을 만든다. 각 tmpa.. 더보기
[프로그래머스 Programmers][Python] 위장 문제 : https://programmers.co.kr/learn/courses/30/lessons/42578 코딩테스트 연습 - 위장 | 프로그래머스 programmers.co.kr 이 문제도 역시 Dictionary, 해쉬맵을 써서 풀면 되는 문제다. 처음에는 ( 의상 종류, 의상 이름) 으로 dictionary에 넣는다. 그 다음이 중요한데, 각 의상중에 하나 이상만 쓰면 되니까, 어떤 의상 종류는 안쓸수 있다. 근데 또, 다 안쓸수는 없다. 따라서, (나같은 경우에는) "" 을 각 의상 종류에다 넣어서 안입는 null value 를 넣었다.(closet[k].append("") ) 이제 각 의상 종류를 모두 곱한 값이 총 방법의 갯수인데, 빼먹은게 하나있다. 1-2 에서 null value를 넣었.. 더보기
[프로그래머스 Programmers][Python] 124 나라의 숫자 문제 : https://programmers.co.kr/learn/courses/30/lessons/12899 코딩테스트 연습 - 124 나라의 숫자 | 프로그래머스 124 나라가 있습니다. 124 나라에서는 10진법이 아닌 다음과 같은 자신들만의 규칙으로 수를 표현합니다. 124 나라에는 자연수만 존재합니다. 124 나라에는 모든 수를 표현할 때 1, 2, 4만 사용합니다. 예를 들어서 124 나라에서 사용하는 숫자는 다음과 같이 변환됩니다. 10진법 124 나라 10진법 124 나라 1 1 6 14 2 2 7 21 3 4 8 22 4 11 9 24 5 12 10 41 자연수 n이 매개변수로 주어질 때, n을 124 programmers.co.kr 이 문제는 3진법 문제이다. 진법문제는 많으므로 이 문.. 더보기
[프로그래머스 Programmers][Python] 여행경로 문제 : https://programmers.co.kr/learn/courses/30/lessons/43164 코딩테스트 연습 - 여행경로 | 프로그래머스 [[ICN, SFO], [ICN, ATL], [SFO, ATL], [ATL, ICN], [ATL,SFO]] [ICN, ATL, ICN, SFO, ATL, SFO] programmers.co.kr Copy-Driven-dev 닉값했다. 개인적으로는 재귀를 정말 싫어하는데, DFS는 재귀를 많이 쓰더라. 대충 방식은 재귀를 쓰나 안쓰나 같다. 티켓을 출발-도착 순으로 나눠서 dict에 넣는다. 티켓의 도착지를 역순으로 저장한다. 스택을 만들고 돌면서 티켓의 출발지에 없거나 -> top not in t 있어도 도착지를 다 돌았으면 -> len(t[top]).. 더보기