Programmers / 스킬트리 / Python 파이썬
·
coding test - python/Programmers
*문제 출처는 프로그래머스에 있습니다. 문제 제목: 스킬 트리 (2단계) 문제 사이트: https://school.programmers.co.kr/learn/courses/30/lessons/49993 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 선행 스킬이란 어떤 스킬을 배우기 전에 먼저 배워야 하는 스킬을 뜻합니다. 예를 들어 선행 스킬 순서가 스파크 → 라이트닝 볼트 → 썬더일때, 썬더를 배우려면 먼저 라이트닝 볼트를 배워야 하고, 라이트닝 볼트를 배우려면 먼저 스파크를 배워야 합니다. 위 순서에 없는 다른 스킬(힐링 등)은 순서에 상관..
Programmers / 이진 변환 반복하기 / Python 파이썬
·
coding test - python/Programmers
*문제 출처는 프로그래머스에 있습니다. 문제 제목: 이진 변환 반복하기 (2단계) 문제 사이트: https://school.programmers.co.kr/learn/courses/30/lessons/70129 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 0과 1로 이루어진 어떤 문자열 x에 대한 이진 변환을 다음과 같이 정의합니다. x의 모든 0을 제거합니다. x의 길이를 c라고 하면, x를 "c를 2진법으로 표현한 문자열"로 바꿉니다. 예를 들어, x = "0111010"이라면, x에 이진 변환을 가하면 x = "0111010" -> "1..
문제 / 합이 같은 부분집합(DFS) / Python 파이썬
·
coding test - python/기본기 문제
문제 제목: 합이 같은 부분집합(DFS) N개의 원소로 구성된 자연수 집합이 주어지면, 이 집합을 두 개의 부분집합으로 나누었을 때 두 부분집합의 원소의 합이 서로 같은 경우가 존재하면 “YES"를 출력하고, 그렇지 않으면 ”NO"를 출력하는 프로그램을 작성하세요. 둘로 나뉘는 두 부분집합은 서로소 집합이며, 두 부분집합을 합하면 입력으로 주어진 원래의 집합이 되어 합니다. 예를 들어 {1, 3, 5, 6, 7, 10}이 입력되면 {1, 3, 5, 7} = {6, 10} 으로 두 부분집합의 합이 16으로 같은 경우가 존재하는 것을 알 수 있다. ▣ 입력설명 첫 번째 줄에 자연수 N(1 total // 2: return 모범답안 def DFS(L,sum): if sum > total // 2: return..
Programmers / 3 x n 타일링 / Python 파이썬
·
coding test - python/Programmers
*문제 출처는 프로그래머스에 있습니다. 문제 제목: 3 x n 타일링 (2단계) - DP 문제 사이트: https://school.programmers.co.kr/learn/courses/30/lessons/12902 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 가로 길이가 2이고 세로의 길이가 1인 직사각형 모양의 타일이 있습니다. 이 직사각형 타일을 이용하여 세로의 길이가 3이고 가로의 길이가 n인 바닥을 가득 채우려고 합니다. 타일을 채울 때는 다음과 같이 2가지 방법이 있습니다 타일을 가로로 배치 하는 경우 타일을 세로로 배치 하는 경..
Programmers / 땅따먹기 / Python 파이썬
·
coding test - python/Programmers
*문제 출처는 프로그래머스에 있습니다. 문제 제목: 땅따먹기 (2단계) - DP 문제 사이트: https://school.programmers.co.kr/learn/courses/30/lessons/12913 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 땅따먹기 게임을 하려고 합니다. 땅따먹기 게임의 땅(land)은 총 N행 4열로 이루어져 있고, 모든 칸에는 점수가 쓰여 있습니다. 1행부터 땅을 밟으며 한 행씩 내려올 때, 각 행의 4칸 중 한 칸만 밟으면서 내려와야 합니다. 단, 땅따먹기 게임에는 한 행씩 내려올 때, 같은 열을 연속해서 밟을 수 없..
Programmers / 2 x n 타일링 / Python 파이썬
·
coding test - python/Programmers
*문제 출처는 프로그래머스에 있습니다. 문제 제목: 2 x n 타일링 (2단계) - DP 문제 사이트: https://school.programmers.co.kr/learn/courses/30/lessons/12900 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 가로 길이가 2이고 세로의 길이가 1인 직사각형모양의 타일이 있습니다. 이 직사각형 타일을 이용하여 세로의 길이가 2이고 가로의 길이가 n인 바닥을 가득 채우려고 합니다. 타일을 채울 때는 다음과 같이 2가지 방법이 있습니다. 타일을 가로로 배치 하는 경우 타일을 세로로 배치 하는 경..
Programmers / 타겟 넘버 (DFS) / Python 파이썬
·
coding test - python/Programmers
*문제 출처는 프로그래머스에 있습니다. 문제 제목: 타겟 넘버 (2단계) 문제 사이트: https://school.programmers.co.kr/learn/courses/30/lessons/43165 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 나의 풀이 (오답...) def solution(numbers, target): answer = 0 n = len(numbers) ch = [0]*n # v가 나타내는게 def DFS(v,n): global answer # 전역변수로 사용 if v == n: tmp = 0 for i in range(1, n):..
문제 / 부분집합 구하기 (DFS) / Python 파이썬
·
coding test - python/기본기 문제
문제 제목: 부분집합 구하기 (DFS) 자연수 N이 주어지면 1부터 N까지의 원소를 갖는 집합의 부분집합을 모두 출력하는 프로그램 을 작성하세요 기본적으로 부분 집합을 구하는 방법 사용하는 상태와 사용하지 않는 상태가 있는 트리 => 상태트리 ch[v] = 1 # 해당 수를 사용 한다 (부분 집합에 포함한다.) ch[v] = 0 # 해당 수를 사용 하지 않는다 (부분 집합에 포함하지 않는다.) 1 2 3 출력함 모범답안 def DFS(v): if v == n+1: for i in range(1, n+1): if ch[i] == 1: print(i, end= ' ') # 원소만 출력 print() else: ch[v] = 1 DFS(v+1) ch[v] = 0 DFS(v+1) print() if __name..
문제 / 이진 트리 순회(깊이 우선 탐색) / Python 파이썬
·
coding test - python/기본기 문제
문제 제목: 이진 트리 순회(깊이 우선 탐색) 개념 전위 순회 방식: 함수 출력시 부모 -> 왼쪽 자식 -> 오른쪽 자식 순서로 출력 중위 순회 방식: 함수 출력시 왼쪽 자식 -> 부모 -> 오른쪽 자식 순서로 출력 후위 순회 방식: 함수 출력시 왼쪽 자식 -> 오른쪽 자식 - >부모 순서로 출력 1. 전위 순회 방식 함수 출력시 부모 -> 왼쪽 자식 -> 오른쪽 자식 순서로 출력 def DFS(v): if v>7: return else: print(v, end=' ') DFS(v*2) DFS(v*2+1) if __name__=="__main__": DFS(1) 2. 중위 순회 방식 함수 출력시 왼쪽 자식 -> 부모 -> 오른쪽 자식 순서로 출력 def DFS(v): if v>7: return else:..
문제 / 재귀 함수를 이용한 이진수 출력 / Python 파이썬
·
coding test - python/기본기 문제
문제 제목: 재귀 함수를 이용한 이진수 출력 10진수 N이 입력되면 2진수로 변환하여 출력하는 프로그램을 작성하세요. 단 재귀함수를 이용 해서 출력해야 합니다. ▣ 입력설명 첫 번째 줄에 10진수 N(1
Programmers / 멀리 뛰기 / Python 파이썬
·
coding test - python/Programmers
*문제 출처는 프로그래머스에 있습니다. 문제 제목: 멀리 뛰기 (2단계) 문제 사이트: https://school.programmers.co.kr/learn/courses/30/lessons/12914 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 멀리 뛰기 문제 설명 효진이는 멀리 뛰기를 연습하고 있습니다. 효진이는 한번에 1칸, 또는 2칸을 뛸 수 있습니다. 칸이 총 4개 있을 때, 효진이는 (1칸, 1칸, 1칸, 1칸) (1칸, 2칸, 1칸) (1칸, 1칸, 2칸) (2칸, 1칸, 1칸) (2칸, 2칸) 의 5가지 방법으로 맨 끝 칸에 도달할 수 있..
문제 / 회의실 배정 (그리디) / Python 파이썬
·
coding test - python/기본기 문제
문제 제목: 회의실 배정 (그리디) 문제 KEY POINT 회의실 배정이 최대가 되도록 구하면 되는 문제이다. 따라서 주어진 데이터에서 어떤 시간을 위주로 볼 것인가? 에대한 문제이다. 이 문제는 시작 시간이 중요한게 아니다. 회의가 끝나는 시간을 위주로 정렬하여, 빨리 끝나는 시간을 기준으로 봐야한다. 1. 입력 창 구현 n = int(input()) meet = [] for i in range(n): m1, m2 = map(int,input().split()) meet.append([m1,m2]) 2. lambda 함수를 이용하여 sorted 함수의 키 값 설정 list = sorted(list, key lambda x: (x[1],x[0])) 는 즉 x[1]의 값을 기준으로 오름차순 정렬을 하겠다는..