728x90
반응형
SMALL

프로그래머스 39

[Python] 대충 만든 자판

✏️ 문제 문제 파악 target의 각 문자에 대해 keymap의 여러 배열에서 해당 문자의 위치 중 최소를 구해야 한다.keymap의 "여러 배열 중에 최소 위치"를 더해야 하므로 이를 min() 메소드를 사용해서 최소 위치를 구했다.그리고 keymap에 아예 없는 문자가 오면 -1을 출력해야 하므로 이 경우도 if 조건문으로 처리해주었다.   코드def solution(keymap, targets): answer = [] for target in targets: num = 0 for t in target: temp_num = 999 for k in keymap: if t in k: ..

[Python] 완주하지 못한 선수

✏️ 문제 문제 파악처음엔 for in 돌아서 있으면 pop() 메소드를 사용해서 나머지 남은 이름을 출력하도록 코드를 짰는데 성능 테스트에서 다 시간 초과가 났다..그래서 Counter 자료구조를 사용해서 쉽게 풀었다..!  (근데 이 문제는 해시 문제라서 해시로도 풀어봐야지..)  코드실패한 코드 def solution(participant, completion): for c in completion: if c in participant: participant.pop(participant.index(c)) return participant[0]성공한 코드 from collections import Counterdef solution(pa..

[Python] 실패율

✏️ 문제 문제 파악스테이지에 도달한 플레이어 수를 구하기 위해스테이지 배열을 오름차순한 후 스테이지의 실패율을 구하면 그 스테이지에 해당하는 유저들을 스테이지 배열에서 삭제하는 방향으로 작성했다. 코드를 제출했을 때 1, 6, 7, 9, 13, 23, 24, 25번의 테스트 케이스에서 런타임 에러가 생기고 실패를 했는데 그 이유는 부모가 0인데 나눠서.. 였다.그 부분을 고치니 (else 부분) 해결되었다!  코드def solution(N, stages): answer = [] fail = [] stages.sort() for i in range(N): if len(stages) != 0: fail.append(stages.count(i+1)..

[Python] 9번 / 지폐 접기

✏️ 문제 문제 파악지폐를 90도로 돌릴 수도 있으므로 이 문제는 wallet과 bill의 배열 각 인덱스끼리 비교하는 것이 아닌 max, min 값끼리 비교하는 것이라고 생각했다. max, min 값을 기준으로 비교한다고 생각하면 조건을 쉽게 생각할 수 있다.  지폐의 큰 길이가 지갑의 큰 길이보다 작거나 같고 지폐의 작은 길이가 지갑의 작은 길이보다 작거나 같으면 지갑에 넣을 수 있다.저 조건에 안맞다면 지폐의 큰 길이를 2로 나누면 된다!  코드def solution(wallet, bill): answer = 0 while max(bill) > max(wallet) or min(bill) > min(wallet): bill[bill.index(max(bill))] = ..

[Python] [1차] 다트 게임

✏️ 문제 문제 파악제일 처음 생각했던 게 점수는 0에서 10 사이의 정수로 한 칸을 차지할 수도 두 칸을 차지할 수도 있다.그래서 점수 길이를 단정할 수 없으니 점수 하나당 S, D, T 하나가 나오게 되니까 S, D, T를 기준으로 앞에 오는 게 숫자라고 단정 짓는 게 맞다고 생각했다! (스타상 * 이나 아차상 # 도 점수 하나당 있을 수도 있고 없을 수도 있으니까 기준으로 삼을 수 없다.) 그리고 점수에 보너스까지 처리한 값을 바로 정답 변수에 넣을 수 없는 게 뒤에 스타상이 온다면 이전 점수에 2배를 해줘야 하기 때문이다.그래서 점수는 배열에 각각 처리한 값을 넣어서 스타상이 나왔을 때 처리할 수 있게 해주어야 한다. 참고로 배열의 뒷 인덱스부터 요소에 접근할 때 다음과 같이 접근할 수 있다.s..

[Python] 덧칠하기

✏️ 문제 문제 파악앞에서 부터 차례대로 for 반복문 돌면서 칠해야 하는 구역을 발견했을 때 경우를 두 가지로 나눠야 한다.룰러가 벽에서 벗어나면 안되므로칠해야 하는 구역 + (m-1) 칠해야 하는 구역 + (m-1) > n - 11번 같은 경우는 룰러의 길이만큼 칠한다.2번 같은 경우는 칠해야 하는 구역보다 앞에 있는 구역은 다 칠해져 있으므로 해당 구역부터 배열의 끝까지 칠하면 된다. 이때 인덱스 0부터 4까지 1을 대입하는 코드는 다음과 같다.ary[0:5] = [1] * 5   코드def solution(n, m, section): wall = [1] * n answer = 0 for s in section: wall[s-1] = 0 for i..

[Python] 카드 뭉치

✏️ 문제 문제 파악처음에는 차례대로 있는 지가 중요한 거니까 cards1과 cards2의 카드들이 goal에 나타나는 순서와 일치하는지 확인하는 코드를 짰다.goal에 나타나는 cards1과 cards2 카드들이 각각 올바른 순서대로 존재한다면 "Yes"를 반환하고 순서가 틀리면 "No"를 반환하도록 했는데 20, 21, 24, 25번 테스트에서 런타임 에러가 떴었다 .. 딕셔너리를 써서 제출해도 똑같았다..  그래서 goal의 배열 값이 cards1 또는 cards2에 있다면 맨 앞 값을 없애는.. 방향으로 코드를 짰다.이때 배열의 맨 앞 값을 없애는 코드는 다음과 같다.ary.pop(0)   코드런타임 에러 코드def solution(cards1, cards2, goal): for i in r..

[Python] 옹알이 (2)

✏️ 문제 문제 파악woo는 발음할 수 있으나 wo는 발음할 수 없으므로 할 수 있는 발음과 "정확히" 같아야 한다.그래서 babbling의 배열 값에 할 수 있는 발음을 차례대로 제거하는 방향으로 replace를 활용하면 된다. for b in babbling: for l in languge: b = b.replace(l, '') 연속해서 같은 발음을 할 수 없다는 유의사항이 있기 때문에 연속해서 같은 발음이 있다면 바로 발음할 수 없는 것으로 처리해주어야 한다! 중요한 것은 만약 replace로 발음 대신 빈값을 넣으면 ["yayae"]이 입력으로 들어올 시 aya를 제거하면 남은 문자가 ye가 되어 할 수 있는 발음으로 처리된다!!!때문에 할 수 있는 발음 대신에 빈 값이 아닌 다..

728x90
반응형
LIST