Cute Running Puppy
반응형

algorithm 42

[Programmers] 연속된 부분 수열의 합 (Python)

📖문제코딩테스트 연습 - 연속된 부분 수열의 합 | 프로그래머스 스쿨 (programmers.co.kr) 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr✨핵심 내용 합이 k인 부분 수열의 시작 인덱스와 마지막 인덱스를 반환- 합이 k 인 부분 수열이 여러 개 일 경우 길이가 짧은 수열 반환- 길이가 짧은 수열이 여러 개인 경우 시작 인덱스가 작은 수열 반환 🤔해결 아이디어 유형: 투포인터1. start 포인터를 기준으로 end 포인터를 이동시킨다 (for 문)2. 만약 부분 수열의 합이 k라면 (시작 인덱스, 마지막 인덱스, 배열의 길이)의 값을 ans에 ..

[Programmers] 리코쳇 로봇 (Python)

📖문제https://school.programmers.co.kr/learn/courses/30/lessons/169199 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr✨핵심 내용 상, 하, 좌, 우 4방향 중 하나를 선택해서게임판 위의 장애물이나 맨 끝에 부딪힐 때까지 미끄러져 이동하는 것을 한 번의 이동으로 친다. 🤔해결 아이디어 유형: BFS R에서 시작하여 미끄러져 이동하며 G에 도착해야 한다. -> 일반적인 최단거리 BFS 문제에서 이동 거리(방식)를 조정해 주면 된다! 위의 그림과 같이 로봇의 도착 위치를 표시할 수 있다. 로봇의 현재 위치에서 ..

[Programmers] 두 원 사이의 정수 쌍(Python, Java)

📖문제https://school.programmers.co.kr/learn/courses/30/lessons/181187 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr ✨핵심 내용 두 원 사이의 x, y 좌표 모두 정수인 점의 개수 반환하기 (각 원위의 점도 세어야 한다)🤔해결 아이디어 유형: 수학 1. i를 1부터 r2까지 반복하며 해당 x 좌표에서의 원 1, 원 2의 y 좌표를 구한다 2. x가 i 일 때 두 원 사이 y 값의 최대 값은 math.sqrt(math.pow(r2, 2) - math.pow(i, 2))3. x가 i 일 때 두 원 사이 y ..

[Programmers] 요격 시스템 (Python, Java)

📖문제https://school.programmers.co.kr/learn/courses/30/lessons/181188 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr ✨핵심 내용 A 나라 미사일: x 축에 평행한 직선 형태의 모양B 나라 미사일: x 축에 수직 한 직선 형태의 모양, 발사된 미사일은 해당 x 좌표에 걸쳐 있는 모든 미사일 관통 가능(단, 개구간이기에 s, e에서 발사하는 미사일로는 요격 불가, x가 실수인 곳에서 발사 가능)🤔해결 아이디어 유형: 그리디, 정렬🟡 구조1. targets을 e 기준으로 오름차순 정렬 2. targets을 ..

[Programmers] 등굣길 (Python, Java)

📖문제https://school.programmers.co.kr/learn/courses/30/lessons/42898 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr ✨핵심 내용 "오른쪽과 아래쪽"으로만 움직여 집에서 학교까지 갈 수 있는 최단경로의 개수를 "1,000,000,007"로 나눈 나머지 return🤔해결 아이디어 유형: DP현재 위치(i, j)에서 경로의 값이 최대가 되려면 왼쪽(i, j-1) 혹은 위(i-1, j)에서 와야 한다 🟡dp 구조1. dp 정의 - (i, j) 위치까지 올 수 있는 최단 경로의 개수  2. dp 초기화 - 집의 ..

[programmers] 정수 삼각형 - Python, Java

📖문제코딩테스트 연습 - 정수 삼각형 | 프로그래머스 스쿨 (programmers.co.kr) 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr ✨핵심 내용 - 거쳐간 숫자의 합이 가장 큰 경우 찾기 - 아래 칸으로 이동할 때는 대각선 방향으로 한 칸 "오른쪽 또는 왼쪽"으로만 이동 가능 🤔해결 아이디어 유형: DP 현재 위치(i, j)에서 최댓값이 되려면왼쪽 위(i-1, j-1) vs 오른쪽 위(i-1, j) 중 어느 방향으로 와야 최댓값이 되는지 찾기✅정답 코드 (Python)def solution(triangle):    n = len(triangle)..

[softeer] 통근버스 출발 순서 검증하기 - python, java

📖문제Softeer - 현대자동차그룹 SW인재확보플랫폼 Softeer - 현대자동차그룹 SW인재확보플랫폼 softeer.ai✨핵심 내용nums[i] nums[k] 를 만족하는 배열을 찾아 개수를 세기제약 조건: 3 🤔해결 아이디어 1. 3중 for 문 사용 (시간 초과)모든 가능한 조합을 만들고, if 문으로 문제 조건을 판단 -> O(n^3) 시간 복잡도로 시간 초과! 2. 백트레킹 (시간 초과)배열의 조합을 백트래킹을 활용하여 만들고 조건 판단 -> O(n^3) 시간 복잡도로 시간 초과! 3. 누적합 (정답) 제약 조건이 3  i와 k의 조합을 기준으로 nums[i]와 nums[k] 사이의 nums[i] 보다 큰 값의 개수를 세는 방법을 사용할 수 있다.  1. nums[i] nums[k] i ..

algorithm/Softeer 2024.06.29

BFS

Breadth First Search 너비 우선 탐색 가까운 노드부터 탐색하는 알고리즘 큐 자료구로를 사용하는 것이 정석 (인접한 노드를 큐에 넣으면 먼저 들어온 것이 먼저 나가게 되므로 가까운 노드부터 탐색할 수 있다) 사용하는 경우 (유형) 연결된 그래프를 탐색하는 경우 최단 거리(최소 횟수)를 구하는 경우 (현재 노드에서 가까운 곳을 먼저 찾기 때문) 그래프의 규모가 크지 않고 시작 지점으로부터 대상이 멀지 않은 경우 cf) 경로의 특징을 저장하는 경우에는 DFS 사용 (BFS는 경로의 특징을 가질 수 없다) 동작 방식 탐색 시작 노드를 큐에 삽입하고 방문 처리 큐에서 노드를 꺼내 인접 노드 중 방문하지 않은 노드를 모두 큐에 삽입하고 방문처리 2번을 더 이상 수행할 수 없을 때까지 반복 code ..

2468_안전 영역

문제 2468번: 안전 영역 (acmicpc.net) 2468번: 안전 영역 재난방재청에서는 많은 비가 내리는 장마철에 대비해서 다음과 같은 일을 계획하고 있다. 먼저 어떤 지역의 높이 정보를 파악한다. 그 다음에 그 지역에 많은 비가 내렸을 때 물에 잠기지 않는 www.acmicpc.net 접근 방식 1. 상하좌우를 돌며 내린 비의 양보다 높은 곳이 있는지 파악한다 -> DFS 활용 2. 높다면 방문처리 한 뒤 return True 3. 낮다면 return False 이 과정을 가장 높은 지역 크기 만큼 반복 (내리는 비의 양) 주의할 점 1. 재귀 함수 범위에 주의하자 # 재귀 함수 범위를 늘려주는 코드 import sys sys.setrecursionlimit(10**7) 2. 제공된 graph를 ..

algorithm/Baekjoon 2023.04.24