분류 전체보기 133

[프로그래머스] 공원 산책 - Java

문제https://school.programmers.co.kr/learn/courses/30/lessons/172928 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 문제 설명주어진 문제는 직사각형 격자로 이루어진 공원에서 로봇 강아지가 명령에 따라 이동하는 시뮬레이션을 구현하는 것입니다. 공원은 'O'로 표시된 길과 'X'로 표시된 장애물로 이루어져 있으며, 강아지는 시작 지점 'S'에서 주어진 명령을 순서대로 수행합니다. 명령 형식은 “방향 거리” 형태로 주어지며, 각 명령을 수행할 때 다음 사항을 확인합니다.이동 방향이 공원을 벗어나는지 확인합니다.이동 중 장애물을 만나는지 확인합니다.위 사항 중..

HashMap (해시맵)

1. HashMap이란?HashMap은 키-값 쌍으로 데이터를 저장하는 자료 구조입니다. 키(Key)는 고유하며, 같은 키로 두 번 데이터를 넣으면 기존 값이 새로운 값으로 덮어쓰입니다.Java의 HashMap은 해시 테이블(Hash Table)을 기반으로 구현되며, 해싱을 사용하여 키와 값의 위치를 빠르게 찾아갈 수 있습니다. HashMap은 내부에서 배열과 연결 리스트(그리고 Java 8부터는 트리)를 혼합하여 데이터를 저장하며, null 키와 null 값을 허용하는 특징이 있습니다. 2. HashMap의 기본 동작 원리HashMap의 핵심은 해싱(Hashing)이라는 개념에 있습니다. 해싱은 키를 해시 함수에 넣어 정수로 변환하고, 이 값을 기반으로 특정 위치에 값을 저장하는 방식입니다. HashM..

cs/자료구조 2024.11.01

[프로그래머스] 베스트앨범 - Java

문제https://school.programmers.co.kr/learn/courses/30/lessons/42579 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr  문제 설명스트리밍 사이트에서 장르별로 가장 많이 재생된 노래를 최대 두 개씩 모아 베스트 앨범을 출시하려 합니다. 각 노래는 고유 번호로 구분되며, 앨범에 수록할 노래를 선택하는 기준은 다음과 같습니다.장르별 총 재생 횟수가 많은 순으로 노래를 수록합니다.같은 장르 내에서는 재생 횟수가 많은 노래를 우선 수록합니다.재생 횟수가 같은 노래가 있을 경우, 고유 번호가 낮은 노래를 우선 수록합니다.이때, 주어진 genres 배열과 plays 배..

[백준] 10799 쇠막대기 - Java

문제https://www.acmicpc.net/problem/10799  문제 개요여러 개의 쇠막대기를 위에서 아래로 레이저로 절단하는 문제입니다. 레이저와 쇠막대기는 괄호 표현으로 주어지며, 레이저는 인접한 ‘( )’로 나타납니다. 각 쇠막대기는 ‘(’로 시작하여 ‘)’로 끝나고, 레이저가 쇠막대기를 절단하면서 조각의 총 개수를 계산하는 것이 목표입니다. 접근 방법스택을 이용한 괄호 쌍 확인: 쇠막대기의 끝과 레이저를 구분하기 위해 스택 자료구조를 사용합니다.레이저와 막대기 구분:‘(’는 막대기 시작을 나타내므로 스택에 푸시합니다.‘)’를 만났을 때, 이전 문자가 ‘(’라면 레이저입니다. 레이저는 현재 스택의 크기만큼 막대기를 절단하므로, 스택에 남은 막대기의 수만큼 조각 수를 더합니다.만약 이전 문자..

문제/백준 2024.10.31

[백준] 4920 테트리스 게임 - Java

문제https://www.acmicpc.net/problem/4920  문제 설명이 문제는 테트리스 블록 중 하나를 N x N 크기의 표에 놓아 블록 아래에 있는 숫자의 합이 최대가 되도록 배치할 때, 그 최대 합을 구하는 문제입니다. 주어지는 블록은 총 5종류이고, 90도씩 회전할 수 있어 각기 다른 형태를 갖습니다.문제 풀이이 문제에서는 다음과 같은 과정을 통해 최댓값을 찾습니다:블록의 모든 가능한 형태 정의블록을 회전시키면 최대 4가지 형태가 생깁니다. 모든 회전 형태를 미리 정의해두고 사용합니다.모든 위치에 블록을 놓아본 후 합 계산각 위치에 대해 모든 블록의 형태를 적용해보고, 표 안에 들어가는 경우에만 블록이 차지하는 네 개의 위치 값을 더하여 합을 계산합니다.최댓값 갱신계산한 합이 이전 최댓..

문제/백준 2024.10.30

[프로그래머스] 입국심사 - Java

문제https://school.programmers.co.kr/learn/courses/30/lessons/43238 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr  문제 개요이 문제는 여러 심사대를 통해 주어진 사람 수 n명을 가능한 한 최소 시간에 모두 심사하는 방법을 찾는 문제입니다. 각 심사대의 심사 시간은 다르며, 모든 사람이 심사를 완료하는데 걸리는 시간의 최솟값을 구해야 합니다.문제 접근 방식입국 심사 문제는 이분 탐색을 활용해 최적의 답을 찾아낼 수 있습니다. 이 문제를 해결하기 위해 전체 시간을 이분 탐색으로 줄여가며 필요한 최소 시간을 찾아낼 수 있습니다.문제 풀이이분 탐색 설정:가능..

[프로그래머스] 여행경로 - Java

문제https://school.programmers.co.kr/learn/courses/30/lessons/43164 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr  문제 개요이 문제는 주어진 항공권을 모두 사용해 여행 경로를 찾는 문제입니다. 여행은 항상 "ICN" 공항에서 출발하며, 항공권을 사용해 여러 공항을 방문하는 단 하나의 경로를 찾아야 합니다. 여행 경로를 찾는 것을 목표로 하며, 알파벳 순서에 따라 경로를 정렬하는 정렬 문제이기도 합니다.문제 분석항공권 사용 조건: 모든 항공권을 반드시 사용해야 합니다.중복 경로: 여러 경로가 가능한 경우 알파벳 순서가 우선인 경로를 반환해야 합니다.탐색..

[프로그래머스] 단어 변환 - Java

문제https://school.programmers.co.kr/learn/courses/30/lessons/43163 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 문제 개요두 개의 단어 begin, target과 단어 집합 words가 주어집니다. 단어 변환 규칙은 다음과 같습니다.한 번에 하나의 알파벳만 바꿀 수 있습니다.변환 과정에서의 단어는 words에 포함되어야 합니다.목표는 begin을 시작으로 target으로 변환하는 최소 변환 단계를 찾는 것입니다. 변환할 수 없는 경우 0을 반환합니다.문제 분석단어 하나씩 알파벳 하나만 바꿔 target에 도달해야 합니다.각 단어가 words에 포함된 ..

[프로그래머스] 소수 찾기 - Java

문제https://school.programmers.co.kr/learn/courses/30/lessons/42839 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr  문제 개요숫자가 적힌 종이 조각이 흩어져 있습니다. 이 조각들을 붙여서 소수를 만들 수 있는 숫자 조합이 몇 개인지 알아내는 문제입니다. 주어진 문자열 numbers로 만들 수 있는 모든 조합을 생성하여, 그 중 소수인 숫자를 찾아 개수를 반환하는 프로그램을 작성합니다.문제 접근 방법모든 조합 생성: 주어진 문자열에서 한 자리 수부터 numbers.length 자리 수까지 가능한 모든 조합을 생성합니다.중복 제거: HashSet을 사용해 ..

[프로그래머스] 이중우선순위큐 - Java

문제https://school.programmers.co.kr/learn/courses/30/lessons/42628# 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr  문제 개요이중 우선순위 큐는 일반적인 우선순위 큐의 기능을 확장하여 최댓값과 최솟값을 동시에 관리할 수 있는 자료구조입니다. 이 문제에서 주어진 연산에는 다음과 같은 기능이 있습니다.I 숫자: 숫자를 큐에 삽입합니다.D 1: 큐에서 최댓값을 삭제합니다.D -1: 큐에서 최솟값을 삭제합니다.이 연산을 처리한 후 큐가 비어 있으면 [0, 0], 비어 있지 않으면 [최댓값, 최솟값]을 반환해야 합니다.해결 방법우선순위 큐 활용자바의 Prior..