분류 전체보기 133

[백준] 9082 지뢰찾기 - Java

문제https://www.acmicpc.net/problem/9082 문제 개요지뢰찾기 게임은 2×N 배열에 숨겨져 있는 지뢰를 찾는 게임입니다. 배열의 첫 번째 줄에는 각 블록 주위에 있는 지뢰의 개수를 나타내는 숫자가, 두 번째 줄에는 지뢰가 숨겨져 있는 위치를 나타내는 *와 숨겨진 블록을 나타내는 #이 있습니다. 주어진 배열에서 지뢰의 총 개수를 찾는 문제입니다. 접근 방법단순 최댓값을 구하는 문제이기 때문에 정확한 위치는 배제하고 생각해 보았습니다.초기 값 설정: 입력받은 힌트 배열을 사용하여 지뢰의 개수를 계산합니다. 지뢰 찾기 로직:배열의 각 요소를 순회하며, 주변 블록의 힌트를 확인합니다.지뢰가 있을 수 있는 위치에서 힌트 값을 감소시키며 지뢰의 개수를 세어갑니다.   import java...

문제/백준 2024.10.17

[프로그래머스] 가장 먼 노드 - Java

문제https://school.programmers.co.kr/learn/courses/30/lessons/49189 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 문제 개요이 문제는 그래프 탐색 문제로, 1번 노드에서 가장 멀리 떨어진 노드가 몇 개인지를 구하는 문제입니다. 노드 간의 거리는 최단 경로에 포함된 간선의 개수로 측정되며, BFS(너비 우선 탐색) 알고리즘을 활용하여 이를 해결할 수 있습니다.접근 방법그래프 표현:노드 간의 연결 정보는 양방향으로 주어지므로, 인접 리스트를 사용하여 그래프를 표현합니다.각 노드가 어떤 노드와 연결되는지 리스트 형..

Graph (그래프)

그래프(Graph)는 정점(Vertex)과 간선(Edge)으로 구성된 자료 구조로, 여러 데이터 요소들 간의 연결 관계를 표현하는 데 매우 유용합니다. 이를 통해 연결된 데이터를 효율적으로 관리하거나 탐색할 수 있습니다. 그래프는 여러 분야에서 응용되며, 특히 네트워크, 지도, 소셜 미디어 등에서 흔히 사용됩니다.1. 그래프의 기본 용어정점(Vertex): 그래프에서 데이터를 담고 있는 개체입니다. 정점은 보통 노드(Node)라고도 부릅니다.간선(Edge): 정점 간의 연결을 나타내는 선입니다. 간선은 방향이 있는지에 따라 유향 그래프(Directed Graph)와 무향 그래프(Undirected Graph)로 나뉩니다.인접 리스트(Adjacency List): 정점마다 연결된 정점들을 리스트로 표현하는..

cs/자료구조 2024.10.15

[프로그래머스] 징검다리 건너기 - Java

문제https://school.programmers.co.kr/learn/courses/30/lessons/64062 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 문제 개요카카오 초등학교의 "니니즈 친구들"이 징검다리를 건너려고 합니다. 징검다리는 숫자가 적힌 디딤돌들로 이루어져 있고, 디딤돌은 밟을 때마다 숫자가 1씩 줄어듭니다. 숫자가 0이 되면 해당 디딤돌은 더 이상 밟을 수 없으며, 친구들은 건너뛸 수 있지만 최대 k칸까지만 건너뛸 수 있습니다. 이때, 최대 몇 명의 친구들이 징검다리를 건널 수 있는지 구하는 문제입니다.접근 방법이진 탐색을 사용하여..

Binary Search (이진탐색)

이진탐색(Binary Search)은 정렬된 배열에서 특정 값을 찾기 위해 사용하는 효율적인 알고리즘입니다. 시간 복잡도가 O(logn)이기 때문에 데이터가 많아질수록 유리합니다. 이진탐색은 배열의 중간 요소와 목표 값을 비교하고, 범위를 절반씩 줄여가며 검색을 반복합니다.이진탐색 동작 과정중간값 선택: 배열의 중간에 위치한 값을 선택합니다.비교: 선택된 중간값과 찾고자 하는 값을 비교합니다.만약 값이 같으면 찾기 성공.값이 작으면 중간값 기준 왼쪽 절반만 확인.값이 크면 중간값 기준 오른쪽 절반만 확인.반복: 범위를 좁혀가며 중간값을 반복적으로 선택하고 비교합니다. public class BinarySearchExample { public static void main(String[] args) ..

cs/알고리즘 2024.10.13

[프로그래머스] 스티커 모으기(2) - Java

문제https://school.programmers.co.kr/learn/courses/30/lessons/12971 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr  문제 개요주어진 스티커 배열에서 서로 인접한 스티커를 선택하지 않으면서 스티커에 적힌 숫자의 합을 최대화하는 문제입니다. 스티커가 원형으로 연결되어 있다는 점에서 첫 번째 스티커를 선택하면 마지막 스티커는 사용할 수 없다는 제약이 있습니다.접근 방법원형 배열 처리: 스티커가 원형으로 연결되어 있기 때문에 첫 번째 스티커와 마지막 스티커를 동시에 선택할 수 없습니다. 이를 해결하기 위해 두 가지 ..

[프로그래머스] 최고의 집합 - Java

문제https://school.programmers.co.kr/learn/courses/30/lessons/12938 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 문제 개요주어진 자연수의 개수 n과 합 s에 대해, 각 원소의 합이 s가 되면서 각 원소의 곱이 최대가 되는 집합을 구하는 문제입니다. 만약, 그러한 집합을 만들 수 없다면 -1이 들어있는 배열을 반환해야 합니다. 접근 방법자연수 분배: s를 n개의 자연수로 최대한 균등하게 나누는 것이 각 원소의 곱을 최대화하는 방법입니다. 즉, 가능한 한 원소들의 값이 비슷해야 곱이 최대가 됩니다.s를 n으로 ..

[프로그래머스] 등굣길 - Java

문제https://school.programmers.co.kr/learn/courses/30/lessons/42898 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 문제 개요계속되는 폭우로 인해 일부 지역이 물에 잠겼습니다. 우리는 물에 잠기지 않은 지역을 통해 집에서 학교까지 가는 최단 경로의 개수를 구하려고 합니다. 집은 격자의 왼쪽 위에 있고, 학교는 오른쪽 아래에 위치합니다. 경로는 오른쪽과 아래쪽으로만 이동할 수 있으며, 물에 잠긴 지역을 피해야 합니다. 이 문제는 주어진 격자의 크기와 물에 잠긴 지역을 고려하여 최단 경로의 개수를 계산하는 문제입니..

[프로그래머스] [PCCP 기출문제] 3번 / 충돌위험 찾기 - Java

문제https://school.programmers.co.kr/learn/courses/30/lessons/340211 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr  문제 개요각 로봇은 정해진 경로에 따라 여러 포인트를 순서대로 방문하며, 로봇이 이동하는 과정에서 특정 좌표에서 충돌할 위험이 있을 수 있다. 이 문제의 목표는 모든 로봇이 운송을 마칠 때까지 발생하는 충돌 위험 상황의 횟수를 계산하는 것접근 방법경로 관리 및 충돌 체크: 로봇들이 이동하는 동안 좌표에서 충돌이 발생하는지 확인해야 한다. 이를 위해 각 시간대에 로봇들이 어떤 좌표에 있는지 추적..

[백준] 12919 A와 B 2 - Java

문제https://www.acmicpc.net/problem/12919 문제 개요주어진 문자열 S와 T가 있을 때, 주어진 조건을 바탕으로 S를 T로 변환할 수 있는지 알아내는 것이 목표문자열의 뒤에 A를 추가문자열의 뒤에 B를 추가하고 문자열을 뒤집는 것이다.접근 방법백트래킹을 이용해서 옳바른지 아닌지를 판단s -> t 순서로 백트래킹을 진행할 경우 시간초과 발생 역방향 진행시 장점효율성: 역으로 진행하면 목표 문자열 T에서 불가능한 경우를 더 빨리 걸러낼 수 있다.단순화: 문자열을 줄이는 과정이기 때문에 조건을 간단하게 확인할 수 있다.import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;imp..

문제/백준 2024.09.22