프로그래머스 6

[프로그래머스] 2 x n 타일링 문제 풀이와 코드

https://school.programmers.co.kr/learn/courses/30/lessons/12900?language=python3# 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr [풀이방법] 타일 크기는 2x1이기 때문에 결국 가로길이인 n에서 1과 2를 조합한 경우의 수를 구하는 문제나 마찬가지이다. n=0인 경우는 타일을 배치할 수는 없지만 경우의 수로 따졌을 때는 타일이 0개 배치된 한 가지 방법이 있다. n=1인 경우는 타일을 세로로 배치하는 한 가지 방법밖에 없다. n=2는 가로와 세로 배치가 모두 가능한데, 세로배치 같은 경우는 ..

알고리즘 2023.01.10

[Python] 프로그래머스 문제: 타겟 넘버

https://programmers.co.kr/learn/courses/30/lessons/43165 코딩테스트 연습 - 타겟 넘버 n개의 음이 아닌 정수가 있습니다. 이 수를 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 있습니다. -1+1+1+1+1 = 3 +1-1+1+1+ programmers.co.kr 처음부터 하나씩 더하고 빼는 경우의 수를 다 구하는 건 비효율적이란 생각이 들어서 반대로 생각해보았다. 숫자들을 전부 더한 다음 거기서 타겟이 되도록 빼는 것이다. 숫자들의 총합은 (타겟이 되기 위한 숫자들 + 잉여 숫자들)이기 때문에 잉여 숫자들의 조합 경우의 수를 구하는 게 답을 구하는 거나 마찬가지이다...

알고리즘 2021.10.01

[Python] 프로그래머스 문제 : 전화번호 목록

NCPC(Nordic Collegiate Programming Contest)문제 programmers.co.kr/learn/courses/30/lessons/42577 코딩테스트 연습 - 전화번호 목록 전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다. 전화번호가 다음과 같을 경우, 구조대 전화번호는 영석이의 전화번호의 접두사입니다. 구조 programmers.co.kr 리스트의 요소 중 한 가지가 다른 리스트들 요소의 접두어인 경우가 있다면 false를 반환하는 해시 알고리즘 문제이다. 처음에는 이중 반복문을 사용해서 리스트의 [i+1]을 [i]의 길이만큼 슬라이싱 해서 두 가지가 동일하다면 접두어로 판단하여 false를 리턴하는 방식을 사용했다. def ..

알고리즘 2021.05.15

[Python] 프로그래머스 : 조이스틱(탐욕법)

프로그래머스에 올라온 NWERC 2010 (Northwestern Europe Programming Contest)의 문제 programmers.co.kr/learn/courses/30/lessons/42860 코딩테스트 연습 - 조이스틱 조이스틱으로 알파벳 이름을 완성하세요. 맨 처음엔 A로만 이루어져 있습니다. ex) 완성해야 하는 이름이 세 글자면 AAA, 네 글자면 AAAA 조이스틱을 각 방향으로 움직이면 아래와 같습니다. ▲ - 다 programmers.co.kr name으로 JAZ가 주어지면 AAA에서 JAZ로 알파벳을 변환시키는 탐욕 법 알고리즘을 짜는 문제이다. 옆 칸으로 이동하는 것과 알파벳을 A에서 하나씩 변환시키는 것에 조작 횟수 1씩을 소모한다. 예시 문제 JAZ같이 [1]번째가 A..

알고리즘 2021.05.11

[Python] 프로그래머스 : 큰 수 만들기(탐욕법)

programmers.co.kr/learn/courses/30/lessons/42883 코딩테스트 연습 - 큰 수 만들기 programmers.co.kr 문자열 형식으로 된 숫자 number와 그 숫자에서 몇 개를 제외할지를 입력받아서 결과를 리턴해주는 프로그램을 짜는 문제이다. 맨 처음에 생각한 방법은 index를 이용해서 푸는 방법이었다. def solution(number, k): answer = '' numberList = [] leng = len(number) listLen = leng - k list = [] startIdx = 0 for i in number: numberList.append(i) for i in range(0, listLen): list.append(-1) for i in ..

알고리즘 2021.05.04

[Python] 프로그래머스 코딩테스트 연습 : 프린터

NWERC 2006 (Northwestern European Programming Contest)문제 programmers.co.kr/learn/courses/30/lessons/42587 코딩테스트 연습 - 프린터 일반적인 프린터는 인쇄 요청이 들어온 순서대로 인쇄합니다. 그렇기 때문에 중요한 문서가 나중에 인쇄될 수 있습니다. 이런 문제를 보완하기 위해 중요도가 높은 문서를 먼저 인쇄하는 프린 programmers.co.kr ==풀이== 딕셔너리에 문서의 인덱스와 그 문서의 우선순위를 저장한다. 우선순위의 최댓값을 구하고 나서 우선순위가 담긴 priorities배열을 하나씩 확인한다. 어떤 문서의 우선순위가 구했던 최댓값이랑 동일하면 그 문서를 출력해야 한다. 출력된 문서 개수를 1 더해주고 출력했다..

알고리즘 2021.04.30