목록프로그래머스 (14)
종식당

https://school.programmers.co.kr/learn/courses/30/lessons/42885 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제를 이해하는 데에 있어서는 어렵지 않았다. 사람들의 몸무게를 합쳐 limit보다 낮게 만들 때 구명보트 하나가 소요된다. 둘이 합쳤을 때 limit보다 크다면 하나씩 구명보트를 이용해야 한다. 그래서 소요되는 구명보트의 최솟값을 구하면 된다. 먼저 내가 제출한 코드를 보겠다. 코드 실행에서는 통과했지만 제출 후 채점에서 통과하지 못했다. def solution(people, limit): an..

문제 설명 주어진 2차원 배열 board에서 moves에 해당하는 열의 요소의 가장 맨 위의 요소를 빼내어 새로운 배열에 추가해 준다. 새로운 배열에서 동일한 인형이 두 개가 쌓이게 되면 이 두 인형을 제거해 준다. 새로운 배열에서 제거된 인형의 총개수를 반환해 주면 된다. board에서 동일한 숫자가 동일한 인형이라고 생각하면 되고 새로운 배열에서 두 개의 연속된 숫자가 있으면 제거해 주면 된다. 이 문제를 처음 봤을 때 stack을 사용해야 될 것 같은데 stack을 어떤 방식으로 사용해야 할 지 감이 안 왔다. 이번 문제는 먼저 코드를 확인하고 이에 대해 설명을 진행하겠다. 제출 코드 def solution(board, moves): answer = 0 stack = [] for i in moves..

이 문제를 처음 봤을 때 어렵지 않게 풀 수 있을 것 같았고 문자열 관련 문제를 많이 풀어본 점이 도움이 많이 된 것 같다. 일단 딕셔너리를 사용해야겠다는 생각이 먼저 들었다. 문자열 s안에서 영단어를 숫자로 바꾸어 출력해야 했기 때문에 s안에서의 영단어가 무엇인지를 알아내야 했다. 때문에 영단어를 딕셔너리의 key로 설정하고 이에 해당하는 숫자를 value로 설정해 주었다. 그 후 for문을 통해 영단어가 무엇인지 확인을 해야 했는데 이 for문을 s안에서 돌려야 할지 딕셔너리 안에서 돌려야 할지 고민을 했다. 먼저 dict.keys()를 사용해서 딕셔너리의 key안에서 for문을 돌리고 이때 key에 해당하는 영단어가 s에 있다면 이 단어를 key의 value값으로 replace를 이용해 바꿔주었다...

먼저 문제에 대해 살펴보면 arr1과 arr2는 십진수로 이루어진 리스트이고 이를 이진수로 변환했을 때 만약 "00101"이고 "10110"이라면 둘이 1이 겹치는 부분을 합쳐서 "10111"로 만들어준 다음 1인 부분은 #으로 0인 부분은 공백으로 바꾸어 리스트에 저장하면 된다. 일단 십진수를 이진수를 변화하기 위해서 bin(십진수)를 사용하였다. 이때 만약 bin(9)를 하면 0x1001이 출력된다. 하지만 위 문제에서 필요한 정보는 n개 만큼의 자릿수가 필요하다 즉, 0x1001을 01001로 바꿔줘야 한다. 0x1001에서 0x를 제외한 정보는 필요하므로 bin(i)[2:]를 통해 정보를 얻어냈다. 그 후 n개의 자릿수로 맞춰줘야 하므로 n개에서 0x를 제외하고 남아있는 정보의 자릿수만큼 뺀 개수..