💡Problem Solving/Programmers 72

[프로그래머스] 숫자 변환하기 (Python)

문제 https://school.programmers.co.kr/learn/courses/30/lessons/154538 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 BFS로 풀면 됨. 다만 6번 테스트 케이스에서 계속 틀림 y가 x값과 같을 수 있음을 고려하지못함 if x == y : return 0 추가 소스코드 from collections import deque def solution(x, y, n): INF = 1e9 dp = [INF] * (y+1) q = deque() q.append((x, 0)) while q: num, cnt = ..

[프로그래머스] 덧칠하기 (Python)

문제 https://school.programmers.co.kr/learn/courses/30/lessons/161989 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 롤러로 칠한 구역의 마지막 index를 기억했다가 다시 칠할 구역이 해당 index보다 커지면 덧칠횟수를 증가시키고 마지막 index를 갱신한다. 소스코드 def solution(n, m, section): answer = 0 lastidx = 0 for i in section: if i > lastidx: answer += 1 lastidx = i + m -1 return answer

[프로그래머스] 외벽 점검 (Python)

문제 https://school.programmers.co.kr/learn/courses/30/lessons/60062?language=python3 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 & 소스코드 from itertools import permutations def solution(n, weak, dist): answer = len(dist) + 1 # 취약점 길이를 두배로 늘리기 weak_len = len(weak) for i in range(weak_len): weak.append(weak[i] + n) # 친구의 순열을 뽑는다. f..

[프로그래머스] 괄호 변환 (Python)

문제 https://school.programmers.co.kr/learn/courses/30/lessons/60058 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1. 입력이 빈 문자열인 경우, 빈 문자열을 반환합니다. 2. 문자열 w를 두 "균형잡힌 괄호 문자열" u, v로 분리합니다. 단, u는 "균형잡힌 괄호 문자열"로 더 이상 분리할 수 없어야 하며, v는 빈 문자열이 될 수 있습니다. 3. 문자열 u가 "올바른 괄호 문자열" 이라면 문자열 v에 대해 1단계부터 다시 수행합니다. 3-1. 수행한 결과 문자열을 u에 이어 붙인 후 반환합니다. 4..

[프로그래머스] 자물쇠와 열쇠 (Python)

문제 https://school.programmers.co.kr/learn/courses/30/lessons/60059 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 핵심은 완전 탐색이다. 자물쇠를 세 배로 키워서 모든 경우의 수로 키를 맞춰본다. 로테이션 코드도 구현이 필요하다. 소스코드 import copy def lotate(key): # 000 010 110 # 100 -> 100 -> 001 # 011 100 000 # 1행 -> 3열 # 2행 -> 2열 # 3행 -> 1열 newkey = [[0 for _ in range(len(key))..

[프로그래머스] 신고 결과 받기 (Java)

문제 https://programmers.co.kr/learn/courses/30/lessons/92334?language=java 코딩테스트 연습 - 신고 결과 받기 문제 설명 신입사원 무지는 게시판 불량 이용자를 신고하고 처리 결과를 메일로 발송하는 시스템을 개발하려 합니다. 무지가 개발하려는 시스템은 다음과 같습니다. 각 유저는 한 번에 한 명의 programmers.co.kr 풀이 Level1 쉬운 문제이다. HashMap 사용하여 쉽게 풀 수 있었다. 소스코드 import java.util.*; class Solution { public int[] solution(String[] id_list, String[] report, int k) { int[] answer = new int[id_list..

[프로그래머스] 코딩테스트 고득점 Kit (Java)

해시 완주하지 못한 선수 (Lv1) 더보기 import java.util.*; class Solution { public String solution(String[] participant, String[] completion) { String answer = ""; HashMap map = new HashMap(); for(String name : participant){ if(map.get(name) == null){ map.put(name, 1); } else { int cnt = map.get(name) + 1 ; map.put(name, cnt); } } for(String name : completion){ int cnt = map.get(name) + 1 ; map.put(name, cnt);..

[프로그래머스] 가장 큰 수 (Java)

문제 https://programmers.co.kr/learn/courses/30/lessons/42746 코딩테스트 연습 - 가장 큰 수 0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 programmers.co.kr 풀이 [6, 10, 2] "6210" 숫자를 String으로 변환 한 후, 인접 한 숫자끼리 합쳐서 사전 순서를 비교한다. 순서대로 합친 문자열이 사전의 뒷 순서가 되도록 숫자의 위치를 변경해준다. [6, 10, 2] 6, 10 = 610 10, 6 = 106 610이 사전의 뒷 순서이므로 변..

[프로그래머스] 최고의 집합 (Java)

문제 https://programmers.co.kr/learn/courses/30/lessons/12938 코딩테스트 연습 - 최고의 집합 자연수 n 개로 이루어진 중복 집합(multi set, 편의상 이후에는 "집합"으로 통칭) 중에 다음 두 조건을 만족하는 집합을 최고의 집합이라고 합니다. 각 원소의 합이 S가 되는 수의 집합 위 조건을 만 programmers.co.kr 풀이 생각 보다 쉽게 풀렸던 문제 각 원소의 합이 S가 되는 수의 집합 위 조건을 만족하면서 각 원소의 곱 이 최대가 되는 집합 N이 3이고 S가 9라면? {3, 3, 3} 이 답이 된다. N이 3이고 S가 10이라면? {3, 3, 4} 가 답이 된다. 여러 개의 케이스를 놓고 답을 구해보니, S를 N으로 나눈 몫에다가 나머지를 차..

[프로그래머스] 메뉴 리뉴얼 (Java)

문제 https://programmers.co.kr/learn/courses/30/lessons/72411 코딩테스트 연습 - 메뉴 리뉴얼 레스토랑을 운영하던 스카피는 코로나19로 인한 불경기를 극복하고자 메뉴를 새로 구성하려고 고민하고 있습니다. 기존에는 단품으로만 제공하던 메뉴를 조합해서 코스요리 형태로 재구성해서 programmers.co.kr 풀이 아래와 같은 데이터가 있다. 알파벳은 각각 메뉴 1개를 의미한다. 기존 고객들이 주문했던 이력을 바탕으로 코스요리를 구성하려고 한다. orders: 기존 고객들이 주문 했던 이력 course: 코스요리에 포함시킬 메뉴의 가짓 수 orders course result ["ABCFG", "AC", "CDE", "ACDE", "BCFG", "ACDEH"] [..