문제풀기(63)
-
프로그래머스 : 올바른 괄호
https://programmers.co.kr/learn/courses/30/lessons/12909 코딩테스트 연습 - 올바른 괄호 괄호가 바르게 짝지어졌다는 것은 '(' 문자로 열렸으면 반드시 짝지어서 ')' 문자로 닫혀야 한다는 뜻입니다. 예를 들어 "()()" 또는 "(())()" 는 올바른 괄호입니다. ")()(" 또는 "(()(" 는 올바르지 않은 programmers.co.kr 전형적인 스택/큐 문제이다. "("가 나오면 스택에 넣고, ")"가 나오면 스택에서 "("를 뺀다. 이 때, 스택이 비어있거나, 마지막에 스택이 비어있지 않으면 올바른 괄호가 아니다. from collections import deque def solution(s): answer = True queue = deque(..
2021.10.30 -
프로그래머스 : 구명보트
https://programmers.co.kr/learn/courses/30/lessons/42885 코딩테스트 연습 - 구명보트 무인도에 갇힌 사람들을 구명보트를 이용하여 구출하려고 합니다. 구명보트는 작아서 한 번에 최대 2명씩 밖에 탈 수 없고, 무게 제한도 있습니다. 예를 들어, 사람들의 몸무게가 [70kg, 50kg, 80kg, 5 programmers.co.kr 투 포인터로 풀었다. (이게 투 포인터 맞나...?) 어차피 최대 2명씩 밖에 탈 수 없기 때문에, people을 sorting 한 후, 가장 왼쪽, 가장 오른쪽부터 하나씩 오면서 더해준다. 이 때, people[left] + people[right] 가 limit을 넘으면 right만 이동하고 answer에 1을 더해준다. 넘지 않으..
2021.10.29 -
프로그래머스 : 2018 KAKAO BLIND RECRUITMENT [1차] 프렌즈4블록
https://programmers.co.kr/learn/courses/30/lessons/17679 코딩테스트 연습 - [1차] 프렌즈4블록 프렌즈4블록 블라인드 공채를 통과한 신입 사원 라이언은 신규 게임 개발 업무를 맡게 되었다. 이번에 출시할 게임 제목은 "프렌즈4블록". 같은 모양의 카카오프렌즈 블록이 2×2 형태로 4개가 붙 programmers.co.kr 최근에 본 코딩테스트에서 거의 동일한 문제를 푼 적이 있다. 근데 어딘지 기억이 안남..... 이런 문제의 경우 여러 함수로 기능을 나눠서 구현하는 것이 디버깅하기도 편하고, 코드 고치기도 편하다. 아직 함수 이름을 어떻게 지어야 좋은지를 잘 모르겠지만... check_erase : 지울게 있는지 확인 후, 지울 게 있다면 2*2 부분의 ..
2021.10.29 -
프로그래머스 : 여행 경로
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 조금 더 심화된 그래프 문제이다. 모든 항공권을 다 사용해야한다는 조건을 놓치기가 쉽다. queue에 현재까지의 루트와 남은 루트들을 모두 넣어주는 방식을 택했다. from collections import deque import copy def solution(tickets): answer = [] graph_dict = di..
2021.10.29 -
프로그래머스 : 등굣길
https://programmers.co.kr/learn/courses/30/lessons/42898 코딩테스트 연습 - 등굣길 계속되는 폭우로 일부 지역이 물에 잠겼습니다. 물에 잠기지 않은 지역을 통해 학교를 가려고 합니다. 집에서 학교까지 가는 길은 m x n 크기의 격자모양으로 나타낼 수 있습니다. 아래 그림은 m = programmers.co.kr 고등학생 때 배운 확률과 통계 중 길찾기 문제를 구현하는 문제라고 볼 수 있다. 현재 칸의 윗 칸까지의 최단거리 + 현재 칸의 왼쪽 칸까지의 최단거리 = 현재 칸 까지의 최단거리 def solution(m, n, puddles): routes = [] for i in range(n): routes.append([0]*m) for i in puddles..
2021.10.28 -
프로그래머스 : 위클리 챌린지 - 12주차
https://programmers.co.kr/learn/courses/30/lessons/87946 코딩테스트 연습 - 12주차 XX게임에는 피로도 시스템(0 이상의 정수로 표현합니다)이 있으며, 일정 피로도를 사용해서 던전을 탐험할 수 있습니다. 이때, 각 던전마다 탐험을 시작하기 위해 필요한 "최소 필요 피로도"와 던 programmers.co.kr 던전들의 개수가 최대 8개이기 때문에 단순하게 itertools의 permutations를 이용하면 된다. 방문 가능한 모든 경우의 수(던전의 순서)를 실행하면서 그 중 가장 많은 던전을 방문하는 경우의 방문 던전 개수를 리턴한다. from itertools import permutations def solution(k, dungeons): answer..
2021.10.28