분류 전체보기 233

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

문제 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

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

문제 링크 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 다음 정규 표현식을 이용해 “..” 을 찾을 수 있다. "[.]{2,}” 문제의 조건에 맞게 구현을 하면 된다. 코드 java public class Solution { public String solution(String new_id) { new_id = toLowerId(new_id); new_id = removeSpecialChar(new_id); new_id = removeContinueDot(new_id); new_id = removeEdgeDot(new_id); new_id = if..

프로그래머스 2022.12.06

백준 6416 - 트리인가?

문제 문제 링크 풀이 트리인지 확인하기 위해서 다음 2가지를 검사한다. Root가 1개인지 검사한다. V로 들어오는 간선이 2개 이상인지 확인한다. 트리는 Root가 1개이어야한다. 또한 V로 들어오는 간선도 1개이어야 한다. 2개 이상이면 사이클이 발생할 수도 있다. 문제에서는 트리의 노드 번호를 특정할 수 없으므로 배열을 사용할 수 없다. 그래서 Set을 이용해 문제를 해결했다. 코드 java import java.util.HashSet; import java.util.Scanner; import java.util.Set; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); St..

BOJ 2022.11.28