반응형

프로그래밍/문제풀이 25

[코딩테스트] 연습문제 - 뒤에 있는 큰 수 찾기

문제 https://school.programmers.co.kr/learn/courses/30/lessons/154539 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr numbers 배열을 순회하면서 현재 값 뒤의 수 중에서 현재 값보다 크면서 가장 가까운 값을 담을 배열을 출력하는 문제 전략 01. 완전탐색 그냥 배열을 순회하면서 뒤에서 본인보다 큰 수가 보이면 그 값을 출력하는 완전탐색 def solution(numbers): answer =[] for i in range(len(numbers)): flag = False for j in range(i..

[코딩테스트] 스택/큐 - 다리를 지나는 트럭

문제 https://school.programmers.co.kr/learn/courses/30/lessons/42583 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 대기 트럭이 하나씩 차례차례로 다리를 지나서 전부 다 지나는 시간을 출력하는 문제. 다리의 최대 하중이 weight로 주어지고, 1초에 길이 1씩 트럭이 전진한다고 가정하고 풀어야 한다. 이렇게 되면 마지막 트럭이 다리 위에 올라서도 그 트럭이 완전히 지나갈 때까지 시간을 세야 한다. 전략 01. 큐 다리를 길이가 제한된 큐라고 생각하면 1초씩 트럭이 전진하다가 해당 길이만큼 이동하면 자동적..

[코딩테스트] 깊이/너비 우선 탐색(DFS/BFS) - 게임 맵 최단거리

문제 https://school.programmers.co.kr/learn/courses/30/lessons/1844 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 최단거리 문제. 이 문제는 대표적인 BFS문제다. 캐릭터는 상하좌우 움직일 수 있으므로 이걸 중점적으로 생각해서 풀어야 한다. 전략 01. BFS 일반적인 BFS로 풀되 각 노드에서 상하좌우로 움직일 때 움직인 노드가 범위를 벗어나거나, 벽인 경우, 그리고 되돌아가는 경우를 제외해야 한다. 풀이 from collections import deque def solution(maps): n, m ..

[코딩테스트] 동적계획법(Dynamic Programming) - 등굣길

문제 https://school.programmers.co.kr/learn/courses/30/lessons/42898 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 길 찾기 경우의 수 문제. 중간에 가지 못하는 길이 있을 경우 어떻게 처리해야 하는지가 중요하다. 문제에서 그림을 잘못 그렸음. m x n 크기라고 해놓고 n x m 그림을 그렸음. 전략 01. 수학적인 풀이 입출력 예제에서 가로로 두번, 세로로 세번 건너는 모든 경우의 수를 센 뒤 웅덩이를 지나는 경우의 수를 빼면 되므로 [가로, 가로, 세로, 세로, 세로]의 경우의 수를 구해주면 된다. ..

[코딩테스트] 깊이/너비 우선 탐색(DFS/BFS) - 타겟 넘버

문제 https://school.programmers.co.kr/learn/courses/30/lessons/43165 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 주어진 numbers를 차례로 더하거나 빼서 target이 되는 방법의 수를 구하는 문제 제한사항이 타이트하지 않아서 다양한 풀이가 가능하다. 전략 01. BFS 가장 처음 생각난 건 BFS다. queue에 (값, 순서)를 넣고 차례차례 꺼내서 더하고 빼준 뒤 다시 queue에 넣어준다. 마지막 순서까지 끝났다면 target값과 같은지 체크하는 방법이다. 풀이 from collections ..

[코딩테스트] 2022 KAKAO BLIND RECRUITMENT- k진수에서 소수 개수 구하기

문제 https://school.programmers.co.kr/learn/courses/30/lessons/92335 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 어떤 수 n을 k진수로 변환한 뒤, 0을 제외한 나머지 묶음들 중에 소수의 개수가 몇 개인지 구하는 문제. 전략 01. k진수 변환, 소수 문제를 보고 두 가지 함수가 추가로 필요할 것 같았다. 먼저 임의의 n을 k진수로 변환하는 함수, 그리고 0을 제외하고 유효한 값이 소수인지 아닌지 판별하는 함수. 풀이 import re def custom_digit_change(n, k): r_str ..

[코딩테스트] 2018 KAKAO BLIND RECRUITMENT - [3차] 압축

문제 https://school.programmers.co.kr/learn/courses/30/lessons/17684 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr LZW 압축을 구현하는 문제 사전에 기본 알파벳을 추가하고 첫 글자부터 시작해서 다음글자를 포함한 단어가 등록되어 있지 않다면 사전에 추가해 반복되는 단어를 확장하는 식으로 압축을 진행한다. 전략 01. 딕셔너리 while문을 이용해 겹치는 단어 중 가장 긴 단어까지 찾아내고 그 단어의 인덱스를 answer에 출력한 뒤, 그 다음 글자가 남아 있다면 그 글자를 포함한 새로운 단어를 사전에 딕..

[코딩테스트] 연습문제 - 숫자 짝꿍

문제 https://school.programmers.co.kr/learn/courses/30/lessons/131128 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr X, Y 두 문자열 중 겹치는 숫자로 만들 수 있는 최댓값을 리턴하는 문제. 겹치는 숫자가 없다면 -1을 리턴하고 만약 0이 여러개라면 0 하나만 리턴해야 한다. 정수형이 아니라 문자열인 점, 제한사항으로 X, Y의 길이가 3,000,000까지 증가할 수 있는 점을 고려해야 한다. 전략 01. Counter collections 라이브러리의 Counter를 이용하면 문자열 각각의 개수를 딕..

[코딩테스트] 스택/큐 - 주식가격

문제 https://school.programmers.co.kr/learn/courses/30/lessons/42584 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 매초마다 갱신되는 주식 시장에서 매초 가격에 대해 몇 초나 방어했는지를 리턴하는 문제 문제 설명이 조금 이상해서 이해하는데 시간이 좀 걸렸다. 입출력 예에서 3초의 경우, 3에서 4초까지 넘어오는 동안 1초 방어한 것으로 보고 0이 아닌 1를 리턴한다. 따라서 마지막 초는 무조건 0이 된다. 전략 01. 브루트포스 prices 리스트를 순회하면서 그 앞의 가격들이 현재 순회중인 값보다 클 경..

[코딩테스트] 해시 - 전화번호 목록

문제 https://school.programmers.co.kr/learn/courses/30/lessons/42577 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr phone_book 전화번호부에 있는 어떤 A라는 번호가 어떤 B라는 번호의 접두어인 경우 False를 리턴, 없는 경우 True를 리턴하는 문제 즉 ["A", "A238712"] 일 경우 False 전략 01. 딕셔너리 문제 제목 자체가 해시를 언급하고 있어서 딕셔너리를 이용해 어떻게 풀 수 있을 지 생각해봤다. 딕셔너리를 하나 만들고 반복문을 돌면서 전화번호부를 검사하는데, 검사가 끝난 ..

반응형