전체 글 140

[백준] 7682 틱택토 - Java

문제https://www.acmicpc.net/problem/7682  문제 개요틱택토는 두 명이 번갈아 가며 말을 놓는 게임으로, 3×3 격자판에서 X와 O를 배치하여 가로, 세로, 또는 대각선 방향으로 연속된 3칸을 채우면 승리하는 게임입니다. 이 문제에서는 특정 틱택토 게임판 상태가 게임의 규칙을 준수하는 유효한 최종 상태인지 판별해야 합니다. 접근 방법게임판 상태 입력 및 변환:입력을 받아 3x3 형태의 게임판으로 변환합니다.입력의 각 문자(X, O, .)는 게임판의 상태를 나타냅니다.유효성 검사:X와 O의 개수 조건: X의 개수는 항상 O보다 크거나 같고, 최대 1개 더 많아야 합니다.승리 조건 검사: X 또는 O가 승리 조건을 만족했는지 확인합니다.여러 승리 조건 확인:만약 X와 O가 동시에 ..

문제/백준 2024.10.25

[백준] 3190 뱀 - Java

문제https://www.acmicpc.net/problem/3190  문제 개요'Dummy'라는 도스게임에서는 뱀이 정사각형 NxN 보드에서 사과를 먹으며 움직이다가 벽이나 자신의 몸에 부딪히면 게임이 끝납니다. 뱀은 처음에 길이가 1이며 매 초마다 이동합니다. 이동 중 사과를 먹으면 길이가 늘어나고, 사과가 없으면 꼬리를 줄입니다. 게임은 뱀이 벽이나 자신의 몸과 부딪힐 때 종료되며, 주어진 사과의 위치와 방향 변환 정보에 따라 게임이 몇 초에 끝나는지를 구하는 문제입니다.접근 방법시뮬레이션을 통한 구현이 문제는 단순한 규칙에 따라 뱀의 움직임을 시뮬레이션하면 해결할 수 있습니다. 뱀의 이동을 매 초마다 시뮬레이션하면서 벽이나 자기 몸과 충돌하는지 체크합니다. 사과가 있는 경우, 사과를 먹고 몸을 늘..

문제/백준 2024.10.24

[백준] 1094 막대기 - Java

문제https://www.acmicpc.net/problem/1094  문제 개요이 문제는 주어진 막대의 길이를 절반으로 나누고 원하는 길이만큼 만들기 위해 최소한 몇 개의 막대를 사용하는지를 묻고 있습니다. 막대의 길이를 이진법으로 표현한 후, 이진수의 '1'의 개수를 세면, 원하는 길이를 만들기 위해 필요한 막대의 수를 알 수 있습니다.접근 방법처음에 64cm 길이의 막대가 있고, 목표는 Xcm 길이의 막대를 만드는 것입니다.64는 이진법으로 표현하면 1000000이고, 막대를 절반으로 자를 때마다 이진법에서 '1'의 개수는 하나씩 줄어듭니다.이진법에서 '1'이 나오는 위치는 Xcm를 만들기 위해 필요한 막대 길이를 나타냅니다.따라서 X를 이진수로 표현했을 때, '1'의 개수만큼의 막대가 필요합니다...

문제/백준 2024.10.23

[백준] 1018 체스판 다시 칠하기 - Java

문제https://www.acmicpc.net/problem/1018 문제 개요M x N 크기의 보드에서 8x8 크기의 체스판을 만들기 위해 다시 칠해야 하는 최소한의 칸 수를 구하는 문제입니다. 체스판은 흑백이 번갈아 칠해진 패턴으로 이루어져 있어야 하며, 보드의 임의의 8x8 부분을 잘라냈을 때 그 부분이 체스판 패턴을 따르지 않는다면, 일부 칸을 다시 칠해야 합니다. 이때, 좌상단이 흰색 또는 검은색으로 시작하는 두 가지 경우에 대해 각각의 칸을 얼마나 다시 칠해야 하는지 계산하고, 그중 최소 값을 구하는 것이 목표입니다. 접근 방법체스판 규칙:체스판은 검은색과 흰색이 번갈아 가면서 칠해져 있습니다. 시작점이 흰색인 경우와 검은색인 경우, 두 가지로 나누어 계산할 수 있습니다.체스판 비교:8x8 크..

문제/백준 2024.10.23

[프로그래머스] 110 옮기기 - Java

문제https://school.programmers.co.kr/learn/courses/30/lessons/77886 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 문제 개요이 문제는 문자열 배열에서 각 문자열을 변형하여 사전 순으로 가장 앞에 오는 문자열을 만드는 문제입니다. 변형 방식은 문자열에서 "110" 패턴을 찾아 이를 제거하고, 다시 문자열 내 임의의 위치에 삽입하여 사전 순서상 앞서게 만드는 것입니다. 주어진 여러 개의 문자열에 대해 이러한 변형을 적용해, 가능한 최적의 결과를 반환해야 합니다.접근 방법"110" 패턴 추출:문자열에서 "110" ..

[프로그래머스] 인사고과- Java

문제https://school.programmers.co.kr/learn/courses/30/lessons/152995 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 문제 개요이 문제는 각 사원의 근무 태도 점수와 동료 평가 점수가 주어졌을 때, 인센티브를 받을 수 있는 사원과 그들의 석차를 구하는 문제입니다. 특정 사원이 다른 사원들 중 어느 한 명이라도 두 점수 모두 낮다면 인센티브를 받지 못하며, 인센티브를 받을 수 있는 사원은 두 점수의 합에 따라 석차가 매겨집니다. 점수의 합이 동일한 사원은 동석차를 가지며, 이 석차에 따라 완호(첫 번째 사원)의 ..

[프로그래머스] 거스름돈 - Java

문제https://school.programmers.co.kr/learn/courses/30/lessons/12907 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 문제 개요Finn은 야간 아르바이트 중 손님에게 거슬러 줄 금액 n을 가지고 여러 동전 단위를 이용해 거스름돈을 줄 수 있는 방법의 경우의 수를 계산하려 합니다. 동전의 단위는 여러 가지가 있으며, 각 동전은 무한히 사용할 수 있습니다. 주어진 금액 n을 다양한 동전 조합으로 거슬러 줄 수 있는 경우의 수를 구하는 문제입니다.접근 방법이 문제는 동적 계획법(Dynamic Programming, D..

[백준] 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