Loading...

[Python] 프로그래머스 - 다리를 지나는 트럭

programmers.co.kr/learn/courses/30/lessons/42583 코딩테스트 연습 - 다리를 지나는 트럭 트럭 여러 대가 강을 가로지르는 일 차선 다리를 정해진 순으로 건너려 합니다. 모든 트럭이 다리를 건너려면 최소 몇 초가 걸리는지 알아내야 합니다. 트럭은 1초에 1만큼 움직이며, 다리 길이 programmers.co.kr * 시뮬레이션 문제는 확실히 디버깅을 할 때, 노트에 직접 시뮬레이션 돌려가며 하거나 컴퓨터에 1초마다 결과값을 출력해가며 비교해야해서 오래걸리는 것 같다. # bridge_length: 다리길이, weight: 다리가 최대 견딜 수 있는 무게, truck_weights: 대기트럭, bridge: 현재 다리에 있는 트럭 상태이다. # 원래 10~16번째 줄을 ..

[Python] 프로그래머스 - 기능개발

programmers.co.kr/learn/courses/30/lessons/42586 코딩테스트 연습 - 기능개발 프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 programmers.co.kr 다른사람들 풀이를 보니 O(N^2)풀이가 많아 '이러면 스택을 쓰는 의미가 없지않나' 생각이 들었다. deque를 사용해 popleft()와 appendleft()를 통해 O(1)에 풀이를 해보았다. import math from collections import deque def solution(progresses, speeds): stack, answer = deq..

[Python] 프로그래머스 - 등굣길

programmers.co.kr/learn/courses/30/lessons/42898 코딩테스트 연습 - 등굣길 계속되는 폭우로 일부 지역이 물에 잠겼습니다. 물에 잠기지 않은 지역을 통해 학교를 가려고 합니다. 집에서 학교까지 가는 길은 m x n 크기의 격자모양으로 나타낼 수 있습니다. 아래 그림은 m = programmers.co.kr 무난한 DP문제이다. 오른쪽과 아래로만 갈 수 있으므로 dp연산을 할 때 윗 좌표값, 왼쪽 좌표값만 고려해주면 된다. def solution(m, n, puddles): dp = [[0] * m for _ in range(n)] dp[0][0] = 1 # 물에 잠긴 곳은 -1 넣어줌 if puddles: for i in puddles: dp[i[1] - 1][i[0..

[Python] 프로그래머스 - 베스트앨범

programmers.co.kr/learn/courses/30/lessons/42579 코딩테스트 연습 - 베스트앨범 스트리밍 사이트에서 장르 별로 가장 많이 재생된 노래를 두 개씩 모아 베스트 앨범을 출시하려 합니다. 노래는 고유 번호로 구분하며, 노래를 수록하는 기준은 다음과 같습니다. 속한 노래가 programmers.co.kr Python의 dictionary는 '해쉬테이블'형식으로 구현되어 있어서 속도가 빠르다. 코테나 알고리즘을 공부하면서 '해시'가 나온다면 파이썬은 대부분 dictionary로 풀면 될 것이다. def solution(genres, plays): answer = [] dic = {} for i in range(len(genres)): if genres[i] in dic: # ..

[Python] 프로그래머스 - 행렬 테두리 회전하기

programmers.co.kr/learn/courses/30/lessons/77485 코딩테스트 연습 - 행렬 테두리 회전하기 6 6 [[2,2,5,4],[3,3,6,6],[5,1,6,3]] [8, 10, 25] 3 3 [[1,1,2,2],[1,2,2,3],[2,1,3,2],[2,2,3,3]] [1, 1, 5, 3] programmers.co.kr "2021 Dev-Matching: 웹 백엔드 개발자(상반기)" 문제이다. 문제에서 지시한대로 따라가며 노가다로 푸는 구현, 시뮬레이션문제이다. 1. rows, columns를 입력받고 행렬을 만든 뒤 1부터 순차적으로 행렬에 넣어준다. 2. queries를 돌며 각각 회전을 실행한다. 주석에 설명했듯이 우측방향(맨 윗줄)을 회전시켜주고 하(맨 오른쪽), 좌..

[Python] 프로그래머스 - 삼각 달팽이

programmers.co.kr/learn/courses/30/lessons/68645 코딩테스트 연습 - 삼각 달팽이 5 [1,2,12,3,13,11,4,14,15,10,5,6,7,8,9] 6 [1,2,15,3,16,14,4,17,21,13,5,18,19,20,12,6,7,8,9,10,11] programmers.co.kr 문제에서는 배열이 삼각형모양으로 주어져 있지만, 왼쪽정렬을 시켜주는게 문제푸는데 도움이 된다. n이 4일때, 왼쪽 정렬을 시켜주면 배열의 모양은 다음과 같다. 1 0 0 0 2 9 0 0 3 10 8 0 4 5 6 7 방향을 꺾어야 하는 수를 보면 n = 4일때 4, 7, 9, 10 에서 꺾어줘야한다. 즉, 꺾는 빈도가 1씩 줄어들고 있음을 알 수 있다. (n = 6일때를 그려서 보..

[Python] 프로그래머스 - 이진 변환 반복하기

programmers.co.kr/learn/courses/30/lessons/70129?language=python3 코딩테스트 연습 - 이진 변환 반복하기 programmers.co.kr 간단하게 문제에서 요구하는대로 풀면 되는 문제이다. 1. cnt에 s문자열 중 0의 갯수를 세서 증가시키고, s에서 0을 제거해준다. 2. new_s에 s의 길이를 2진법으로 변환하면 0b110 이런꼴로 나오기때문에 앞에 0b를 없앤 2번째 인덱스부터 저장해준다. 3. new_s가 '1'이 될때까지 반복 def solution(s): answer = [] cnt, t = 0, 0 while True: t += 1 cnt += s.count('0') s = s.replace('0', '') new_s = bin(len(..

[Python] 프로그래머스 - 신규 아이디 추천

programmers.co.kr/learn/courses/30/lessons/72410 코딩테스트 연습 - 신규 아이디 추천 카카오에 입사한 신입 개발자 네오는 "카카오계정개발팀"에 배치되어, 카카오 서비스에 가입하는 유저들의 아이디를 생성하는 업무를 담당하게 되었습니다. "네오"에게 주어진 첫 업무는 새로 programmers.co.kr 2021 카카오 블라인드 코딩테스트 기출문제이다. '정규표현식(Regular Expression)' 에 대해 묻는 문제이다. 예전에 웹해킹 공부를 잠깐 할 때, 대충 공부해서 잘 생각이 나지 않아 노가다로 일단 풀었다. import re def solution(new_id): # 1단계 answer = new_id.lower() # 2단계 answer = re.sub(..