전체 글 180

프로그래머스 - 컨트롤 제트

문제 https://school.programmers.co.kr/learn/courses/30/lessons/120853 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 스택을 이용해 문자열 s에 있는 숫자들을 관리한다. 문자열 s에 있는 숫자들을 차례대로 스택에 넣는다. 숫자가 아닌 Z 차례일 경우 스택에서 숫자를 pop 하면 바로 전에 더했던 숫자를 빼는 것과 같다. 마지막까지 스택에 남아있는 숫자들을 더하면 답이 된다. 코드 python 1 2 3 4 5 6 7 8 9 10 11 def solution(s): stack = [] for n in ..

프로그래머스 2024.01.26

프로그래머스 - 올바른 괄호

문제 https://school.programmers.co.kr/learn/courses/30/lessons/12909 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 스택을 이용해 괄호 짝을 맞춘다. ( 차례면 스택에 넣고 ) 차례에 (을 빼면 괄호 짝을 맞춘거다. 올바른 괄호만 입력으로 주어지면 스택에는 괄호가 남아있지 않는다. 만약 ) 차례에 스택에서 꺼낼 ( 괄호가 없거나, 마지막 입력까지 주어진 후 스택에 괄호가 남아있다면 올바른 괄호 s가 아닌거다. 코드 python 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 def s..

프로그래머스 2024.01.25

프로그래머스 - 같은 숫자는 싫어

문제 https://school.programmers.co.kr/learn/courses/30/lessons/12906 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 스택을 이용해 연속되는 숫자를 관리한다. arr의 숫자를 스택에 저장할 때 스택의 top에 있는 숫자와 지금 저장할 숫자가 같은지 확인한다. 코드 python 1 2 3 4 5 6 7 8 def solution(arr): answer = [] for n in arr: if not (answer and n == answer[-1]): answer.append(n) return answer..

프로그래머스 2024.01.24

프로그래머스 - 표 편집

문제 https://school.programmers.co.kr/learn/courses/30/lessons/81303 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 cmd가 모두 수행된 후 처음과 비교해서 각 행이 삭제됐는지 알아내야 한다. 그 후 삭제된 행만 X로 바꾸면 된다. 실제 배열을 선언하고 삽입, 삭제 연산을 하는 대신 인덱스만으로 연산을 진행한다. 각 행마다 위와 아래에 위치한 행과의 차이를 나타낼 수 있다. 행 번호 up down 0 1 1 0 2 2 1 3 3 2 up, down은 행 번호를 기준으로 위에 있는 행, 아래에 있는 행..

프로그래머스 - 주식가격

문제 https://school.programmers.co.kr/learn/courses/30/lessons/42584?language=python3 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 인덱스의 차이를 통해 가격이 떨어지지 않는 기간을 구한다. 주식 가격이 떨어지는 인덱스를 기준으로 다른 인덱스와의 길이를 구할 수 있다. 가격이 떨어지는 인덱스보다 이전 인덱스의 가격이 높으면 이전 인덱스의 길이를 확정한다. 스택을 이용해 인덱스를 저장해 길이 비교를 쉽게 한다. 스택에 마지막까지 남아있는 인덱스는 가격이 떨어지지 않는 주식 가격이다. 이 ..

프로그래머스 - 짝지어 제거하기

문제 https://school.programmers.co.kr/learn/courses/30/lessons/12973 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 짝일 수 있는 문자 2개를 확인하기 위해 스택을 이용한다. 짝을 확인하는 방법은 스택의 top에 있는 문자와 이번에 스택에 넣을 문자를 비교하면 된다. 짝이 맞다면 스택에 새로운 문자를 넣지 않고 스택의 top에 있는 문자만 제거해주면 된다. 코드 python 1 2 3 4 5 6 7 8 9 def solution(s): stack = [] for c in s: if stack and ..

프로그래머스 2024.01.13

프로그래머스 - 괄호 회전하기

문제 https://school.programmers.co.kr/learn/courses/30/lessons/76502 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 문자열을 회전한 후 열린 괄호-닫힌 괄호 순서가 맞는 괄호 짝을 계속 빼면 된다. 만약 올바른 괄호 문자열이면 문자열의 길이는 0이 될 것이다. 스택을 이용해서도 비슷하게 해결 가능하다. 코드 python 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 def rotate(s): return s[1:] + s[:1] def is_ri..

프로그래머스 - n^2 배열 자르기

문제 https://school.programmers.co.kr/learn/courses/30/lessons/87390 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 2차원 배열의 값을 채우는 규칙을 찾으면 배열을 사용하지 않아도 된다. 2차원 배열을 만들어서 문제를 해결하는 경우 O(n^2) 시간복잡도로 문제를 풀 수 없다. 배열의 값을 채우는 규칙은 다음과 같다. 인덱스의 몫과 나머지로 n x n 배열의 행과 열을 알 수 있다. 그중 큰 값에 1을 더하면 배열의 값이다. 코드 python def solution(n, left, right): an..

프로그래머스 2024.01.10

프로그래머스 - 방문 길이

문제 https://school.programmers.co.kr/learn/courses/30/lessons/49994 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 구현 문제다 [현재 좌표, 이동할 좌표]로 배열을 만들어 걸어본 길을 저장한다. 걸어본 길은 양방향으로 확인한다. [현재 좌표, 이동할 좌표], [이동할 좌표, 현재 좌표]를 확인 한 후 걸어본 길을 저장한다. 좌표가 중복이 안되게 체크하고, 이동할 좌표도 좌표 평면의 길이를 넘지 않도록 주의한다. 코드 python def solution(dirs): traces = [] current..

프로그래머스 2024.01.06

백준 17472 - 다리 만들기 2

문제 https://www.acmicpc.net/problem/17472 17472번: 다리 만들기 2 첫째 줄에 지도의 세로 크기 N과 가로 크기 M이 주어진다. 둘째 줄부터 N개의 줄에 지도의 정보가 주어진다. 각 줄은 M개의 수로 이루어져 있으며, 수는 0 또는 1이다. 0은 바다, 1은 땅을 의미한다. www.acmicpc.net 풀이 지도에서 표시된 섬마다 다르게 숫자로 표시한다. 이를 위해 BFS로 탐색하면서 섬마다 값을 부여한다. 각 섬에서 다른 섬으로 연결할 수 있는 에지가 있는지 확인해서 에지 리스트를 만든다. 이를 위해 섬 마다 모든 점에서 상하좌우로 다리를 만들어본다. 만든 에지리스트로 크루스칼 알고리즘을 적용해 최소 신장 트리를 만든다. 코드 java import java.io.Bu..

BOJ 2023.03.06