Algorithm/Stack & Queue 10

[Python] 백준 2493번 탑

문제https://www.acmicpc.net/problem/2493입력첫째 줄에 탑의 수를 나타내는 정수 N이 주어진다. N은 1 이상 500,000 이하이다. 둘째 줄에는 N개의 탑들의 높이가 직선상에 놓인 순서대로 하나의 빈칸을 사이에 두고 주어진다. 탑들의 높이는 1 이상 100,000,000 이하의 정수이다.출력첫째 줄에 주어진 탑들의 순서대로 각각의 탑들에서 발사한 레이저 신호를 수신한 탑들의 번호를 하나의 빈칸을 사이에 두고 출력한다. 만약 레이저 신호를 수신하는 탑이 존재하지 않으면 0을 출력한다.입력 예제56 9 5 7 4출력 예제0 0 2 2 4문제 풀이완탐을 진행하면 시간초과가 발생하므로 stack을 사용하여 풀이해야한다.stack을 생성해서 0번째 인덱스를 넣는다.이후 stack에 ..

[Python] 프로그래머스 주식가격

문제 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 문제 풀이순서대로 값을 꺼내서 확인하기 위해 주식 가격 정보를 queue로 변경맨 앞에 있는 값부터 확인하면서 확인값이 떨어지면 cnt를 멈추고 떨어지지 않았다면 계속해서 반복최대길이가  100,000이므로 for문을 돌리지 않고 바로바로 꺼내서 확인 -> 시간초과 남 ㅠㅠ코드from collections import dequedef solution(prices): answer = [] prices = deque(prices) while prices: p = prices.popl..

[Python] 프로그래머스 프로세스

문제 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 문제 풀이프로세스 담은 큐 생성편의를 위해 프로세스를 알파벳으로 처리하지 않고 그냥 숫자로 처리했다.우선순위 배열 큐로 변환수행되지 않은 프로세스가 남아있을 때 까지 프로세스와 우선순위 poppop했다면 남은 우선순위를 모두 돌면서 더 높은 순위가 있다면 다시 삽입우선순위를 끝까지 돌았으나 더 높은 순위가 없다면 result에 넣기모든 프로세스가 끝났다면 resut에서 location이 있는 인덱스 찾아서 반환 후 1 더하기프로세스를 0부터 넣었는데 순서는 1부터 시작하므로 1 더해주면 됨코드from col..

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

문제 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr문제 풀이남은 일수 담은 배열 생성편하게 연산하기 위해 큐에 일수 모두 넣기큐에서 pop한 후 그 값이 queue[0]보다 크거나 같다면 함께 처리 할 수 있는 기능queue[0]값 popcnt += 2queue[0]이 더 크다면 함께 처리할 수 없는 기능이므로 answer배열에 여태 계산한 기능 수를 넣고 바깥쪽 루프 연산 다시 시작코드from collections import dequedef solution(progresses, speeds): answer = [] days = [] for..

[Python] 백준 9935번 문자열

문제https://www.acmicpc.net/problem/9935입력첫째 줄에 문자열이 주어진다. 문자열의 길이는 1보다 크거나 같고, 1,000,000보다 작거나 같다.둘째 줄에 폭발 문자열이 주어진다. 길이는 1보다 크거나 같고, 36보다 작거나 같다.두 문자열은 모두 알파벳 소문자와 대문자, 숫자 0, 1, ..., 9로만 이루어져 있다.출력 첫째 줄에 모든 폭발이 끝난 후 남은 문자열을 출력한다.입력 예제mirkovC4nizCC44C412ab112ab2ab12ab출력 예제mirkovnizFRULA문제 풀이stack에 문자를 하나씩 넣으면서 bomb문자가 있는지 확인한다.bomb 문자가 있다면 bomb의 길이만큼 stack에서 pop한다.stack에 남아있는 문자가 없다면 FRULA를 출력한다...

[JAVA] 백준 1715번 카드 정렬하기

문제 1715번: 카드 정렬하기 정렬된 두 묶음의 숫자 카드가 있다고 하자. 각 묶음의 카드의 수를 A, B라 하면 보통 두 묶음을 합쳐서 하나로 만드는 데에는 A+B 번의 비교를 해야 한다. 이를테면, 20장의 숫자 카드 묶음과 30장 www.acmicpc.net 입력 첫째 줄에 N이 주어진다. (1 ≤ N ≤ 100,000) 이어서 N개의 줄에 걸쳐 숫자 카드 묶음의 각각의 크기가 주어진다. 숫자 카드 묶음의 크기는 1,000보다 작거나 같은 양의 정수이다. 출력 첫째 줄에 최소 비교 횟수를 출력한다. 입력 예제 3 10 20 40 출력 예제 100 문제 풀이 가장 작은 값 두개를 계속해서 더해나가면 최소 비교횟수를 도출해낼 수 있다. pq에 입력받은 값을 모두 넣은 후, 값이 2개 이상 있다면, 임..

[Python] 백준 1158번 요세푸스 문제

문제 1158번: 요세푸스 문제 첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 5,000) www.acmicpc.net 입력 첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 5,000) 출력 예제와 같이 요세푸스 순열을 출력한다. 입력 예제 7 3 출력 예제 문제 풀이 k - 1 번째 값까지 pop해서 큐의 뒤에 붙인다. 그 후, 맨 앞의 값이 k번째 값이므로, pop해서 answer에 붙인다. 위 과정 반복하여, answer에 요세푸스 순열 저장 후, 출력 형식 맞추기 위해, answer의 값들을 int가 아닌 문자로 바꾼다. 형식에 맞게 출력한다. 코드 from collections import deque n,k = map(..

[Python] SWEA 1220번 Magnetic

문제 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 나의 풀이 위에 있는 자석이 1, 아래에 있는 자석이 2이므로 열이 아닌 행을 기준으로 탐색하면서 다른 극을 만나면 교착상태에 빠지는 횟수를 카운트 해준다. 위에있는 자석이 N극이므로, 제일 위에 있는 행에 S극이 있다면, 테이블 밖으로 떨어질 것이므로, 행을 탐색할 때 처음 값이 N극인 경우를 탐색해야한다. N극인 경우 flag값을 1로 바꾼 후, 같은 열의 다른 행에서 S극을 만났다면 교착상태로 카운트 하고, flag를 다시 0으로 바꿔준다. 위 과정을 반복한 후, 출력형식에 맞게 교착상태로 카운트 된 횟수를 출력한다. 코드 for tc in range(..

[Python] 백준 2812번 크게 만들기

문제 2812번: 크게 만들기 N자리 숫자가 주어졌을 때, 여기서 숫자 K개를 지워서 얻을 수 있는 가장 큰 수를 구하는 프로그램을 작성하시오. www.acmicpc.net 입력 첫째 줄에 N과 K가 주어진다. (1 ≤ K < N ≤ 500,000) 둘째 줄에 N자리 숫자가 주어진다. 이 수는 0으로 시작하지 않는다. 출력 입력으로 주어진 숫자에서 K개를 지웠을 때 얻을 수 있는 가장 큰 수를 출력한다. 입력 예제 4 2 1924 7 3 1231234 출력 예제 94 3234 문제 풀이 수를 가장 크게 만드려면 맨 왼쪽에 가장 큰 수가 와야하고, 배열을 사용하여 각 값에 접근하고 지우면 시간 초과가 날 수 있으므로 스택을 사용하여 해결한다. 숫자를 문자열 리스트로 저장한 후, 하나씩 꺼내보면서, stac..