본문 바로가기

프로그래머스(Java)/Level 1

(34)
[프로그래머스] [PCCP 기출문제] 1번 / 붕대 감기 코드 힌트턴제 게임:게임은 턴제로 진행되며, 몬스터가 공격하는 턴에는 회복을 할 수 없습니다.반면, 공격이 없는 준비 턴에는 체력을 회복할 수 있습니다.기본 체력 회복:매 턴마다 기본 회복량이 적용됩니다.공격이 발생하기 전까지 회복은 계속되며, 이로 인해 체력이 점진적으로 증가합니다.추가 회복:일정 시간마다 추가적인 회복이 발생합니다.이 회복은 주기적으로 일어나며, 기본 회복과 함께 체력을 추가로 회복시킬 수 있습니다.공격 처리:몬스터의 공격이 발생하면 현재 체력에서 공격 데미지만큼 감소합니다.공격 후 회복 주기가 초기화되므로, 다음 공격까지 체력을 최대한 회복하는 것이 중요합니다.게임 종료 조건:체력이 0 이하로 떨어지면 즉시 게임이 종료됩니다.모든 공격을 견뎌낸 후 남은 체력이 게임의 최종 결과로 반..
[프로그래머스] [1차] 다트 게임 코드 힌트문자열 파싱 및 점수 계산:주어진 dartResult 문자열을 순차적으로 탐색하며, 각 문자를 처리해 점수를 계산합니다.점수는 세 라운드로 이루어져 있으며, 각 라운드는 숫자(점수)와 보너스(S, D, T), 옵션(*, #)으로 구성됩니다.점수 처리:각 라운드의 점수는 숫자 부분에서 추출합니다. 1 다음에 0이 나오는 경우는 10점으로 처리해야 하므로, 이를 특별히 체크합니다.라운드의 점수는 lastPoint와 currentPoint로 관리되며, 마지막에 최종적으로 합산됩니다.보너스 처리:보너스 문자인 S, D, T는 각각 1제곱, 2제곱, 3제곱을 의미합니다.각 보너스 문자를 만나면, 현재 점수에 제곱 연산을 수행하여 보너스를 적용합니다.옵션 처리:*(스타상)은 현재 라운드와 이전 라운드의 점..
[프로그래머스] 문자열 나누기 코드 힌트문자 카운트하기:주어진 문자열에서 특정 문자(target)와 다른 문자의 개수를 추적해야합니다.저는 이를 위해 배열을 사용하였지만 변수로 +1 -1로 하셔도 무관합니다. 또는 2개의 변수를 사용하셔도 됩니다.문자 개수 비교:문자열을 순회하면서 target 문자와 일치하는 경우와 그렇지 않을 경우 카운트를 관리합니다.카운트가 같아질 때마다 결과를 1 증가시킵니다. 이는 균형 잡힌 문자열이 하나 완성되었음을 의미합니다.마지막 문자열 처리:반복이 끝난 후에도 카운트가 같지 않다면, 남아있는 문자열이 있으므로 결과에 1을 더해줍니다.  정답은 더보기 클릭더보기class Solution { public int solution(String s) { int result = 0; // 결과를..
[프로그래머스] 신고 결과 받기 코드 힌트저는 Set을 사용하지 않고 boolean[][] 을 사용하여 중복을 제거했습니다. 만약 Set으로 제거하는 것을 원하시는 분은 다른 글을 참고하시는 것을 추천합니다.ID와 인덱스 매핑하기(HashMap )사용자 ID 목록을 기반으로, 각 사용자의 ID와 해당 인덱스를 연결합니다. 이렇게 하면 신고 내역을 처리할 때, 사용자 이름 대신 인덱스를 사용해 작업할 수 있어 효율적입니다.중복 신고 방지(boolean[][]  : [신고한 사람 index][신고당한 사람 index])신고 내역을 처리할 때, 동일한 사용자가 같은 사람을 여러 번 신고하는 경우, 중복 신고를 피하기 위해 신고가 이미 처리된 적이 있는지 확인합니다.중복 신고를 방지하는 배열을 사용하여, 만약 이전에 신고된 적이 없다면 신고 ..
[프로그래머스] 둘만의 암호 코드 힌트문자를 순회하며 변형하기:주어진 문자열 s의 각 문자를 한 번씩 순회하면서 변형합니다.다음 문자로 이동하기:각 문자를 지정된 횟수만큼 다음 문자로 이동합니다.예를 들어, 'a'에서 시작하여 1번 이동하면 'b'가 됩니다. 2번 이동하면 'c'가 됩니다.문자 순환 처리:알파벳은 'z'에서 'a'로 순환합니다. 만약 'z'에서 다음 문자로 이동해야 한다면, 다시 'a'로 돌아가야 합니다.배열로 알파벳의 index를 구하여 넘었는지 확인할 수도 있고, char 타입으로 바꾸어서 확인하셔도 됩니다.건너뛸 문자 처리:주어진 문자열 skip에 포함된 문자는 건너뛰고, 다음 문자로 이동합니다.문자열에 포함이 됐는지는 contains() 메소드를 활용합니다.조건 확인 및 이동:다음 문자로 이동할 때마다 건너뛸..
[프로그래머스] [PCCE 기출문제] 9번 / 이웃한 칸 코드 힌트배열 접근 방법:상하좌우 네 방향을 한 번에 처리하기 위해 dy, dx 배열을 사용합니다.int[] dx = {1,0,-1,0}     int[] dy = {0,1,0,-1}; 로 설정하시면됩니다.for문을 이용해서 각 방향에 대해 좌표 이동을 계산하여 nx, ny 변수에 저장합니다.색상 비교:주어진 좌표 (h, w)에서 상하좌우에 있는 좌표들의 색상과 targetColor를 비교하여 같은 색상의 개수를 세는 방법입니다.결과 반환:최종적으로 result 변수에 저장된 값, 즉 주어진 좌표에서 상하좌우에 있는 같은 색상의 개수를 반환합니다. 더보기class Solution { public int solution(String[][] board, int h, int w) { // b..
[프로그래머스] 크레인 인형뽑기 게임 코드 힌트stack을 사용하기:이유: Stack은 후입선출(LIFO, Last-In-First-Out) 구조를 가지며, 바구니의 맨 위에 있는 인형과 새로 뽑은 인형을 쉽게 비교할 수 있습니다. 인형을 뽑고 바구니에 넣거나, 바구니 맨 위의 인형을 제거하는 등의 작업을 효율적으로 수행할 수 있습니다.stack이 비어있을 때와 stack의 제일 위 요소가 동일할 때:stack이 비어있을 때:바구니가 비어있는 경우, 현재 뽑은 인형을 바로 바구니에 추가합니다.stack의 제일 위 요소와 현재 뽑은 인형이 동일할 때:바구니의 맨 위에 있는 인형과 새로 뽑은 인형이 동일하면, 두 인형이 터져서 사라지므로 바구니 맨 위의 인형을 제거하고, 사라진 인형의 수를 증가시킵니다.result에는 stack.pop()을 했..
[프로그래머스] 키패드 누르기 코드 힌트초기 설정:'*'와 '#'의 초기 위치를 설정합니다.이 위치는 leftPos와 rightPos 배열에 저장됩니다.초기 설정 후에는 이 위치들이 번호 입력에 따라 업데이트됩니다.번호와 위치 매핑:각 번호와 그에 해당하는 위치를 저장해야 합니다.저는 이를 위해 번호를 키(key)로, 위치를 값(value)으로 하는 해시맵(HashMap)을 사용했습니다.해시맵말고도 2차원 배열을 사용하셔도 됩니다.이 맵은 번호를 입력하면 그 번호의 위치를 반환하는 용도로 사용됩니다.손의 초기 설정:사용자가 오른손잡이인지 왼손잡이인지 설정합니다이 설정은 번호를 누를 때 손의 선택에 영향을 줍니다.번호 입력 처리:주어진 번호 배열(numbers)을 순회하면서 각 번호를 누를 때마다 손의 선택을 결정합니다.왼쪽 열의 번호..