Banner

My Tech Blog (Java)

📑 1. 문제설명💡 2. 접근방식 ✔️ 문제 요약 - 지뢰찾기 게임board는 n x n 크기의 2D 배열이다.지뢰가 있는 위치는 1, 없는 위치는 0이다.지뢰(1)가 있는 곳을 기준으로 주변 8방향 + 자기 자신까지 위험지대(1)로 표시해야 한다.최종적으로 안전한 지역(0)의 개수를 반환하는 문제이다.✔️ 풀이 방식배열 bd[][] 생성 → 기존 board[][]의 정보를 가져온다.board[][] 에서 지뢰(1)를 찾으면 주변 8방향 + 자기 자신을 1로 변경한다.이 때 중요한 것은 배열 범위를 벗어나지 않도록 Math.min(), Math.max()를 사용해서 인덱스 위치를 조정한다.모든 위험지대를 표시한 후 남은 0의 개수를 세어 반환한다.그림으로 표현해 보았다. 지뢰가 있는 위치 즉, boa..
· Java
⚠️ 문제* 제이유닛은 실행 결과를 콘솔에서 확인하는 것이 아니고 JUnit 탭에서 확인한다. * 원칙적으로는 아래와 같은 방법을 따르면 결과를 확인할 수있다.JUnit 테스트 실행 (Run As → JUnit Test) Eclipse 하단 "JUnit" 탭 클릭 테스트 결과 확인 (성공하면 녹색, 실패하면 빨간색)하지만 제이유닛 탭에서는 결과가 뜨지 않고  콘솔에 아래와 같은 에러 메세지가 뜨는 현상java.lang.NoClassDefFoundError: org/junit/platform/engine/ConfigurationParameters🧐 원인에러가 발생한 이유는 환경설정에 문제가 있다.JUnit을 추가할때 Modulepath에 추가했기 때문에 문제가 발생한다.⚡ 해결법제이유닛 라이브러리를 Cl..
📑 1. 문제설명 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr💡 2. 풀이 과정이 문제는 queue 로 푸는 문제이다 (이걸 유추할 수 있는 부분)card1과 card2는 무조건 앞부터 사용해야 함순서를 뒤바꿀 수 없음이 두 문장은 FIFO 구조를 나타낸다.그래서 card1, card2, goal 을 큐를 사용해서 관리 가능하다.  card1과 card2, goal을 큐로 변환한다.goal의 front와 (card1 또는 card2)의 front의 값을 비교한다.사용할 수 있는 카드가 있는가? (값이 같으면 사용 가능)Yes이면 해당 큐와 goal에서 각각 poll, 그렇지 않으면 No를 반환한다..
📑 1. 문제설명✅ 문제 이문제는 유대인 역사가 플라비우스 요세푸스가 만든 문제이다. N명의 사람이 원 형태로 서 있다. 각 사람은 1부터 N까지 번호표를 갖고 있다. 그리고 임의의 숫자 K가 주어졌을 때 다음과 같이 사람을 없앤다.1번 번호표를 가진 사람을 기준으로 K번째 사람을 없앤다.없앤 사람 다음 사람을 기준으로 하고 다시 K번째 사람을 없앤다.N과 K가 주어질 때 마지막에 살아 있는 사람의 번호를 반환하는 solution() 함수를 구현해주세요 ✅ 제약조건N과 K는 1이상 1000이하의 자연수이다. ✅ 입출력 예NKreturn523 💡 2. 풀이 과정입출력 예를 그대로 그림으로 구현하려고 한다.N = 5, K = 2 이고 사람마다 1~5번까지의 숫자를 붙여 원형으로 배치한다.그리고 첫번째 ..
📑 1. 문제설명💡 2. 풀이 과정 문제를 요약하면 토너먼트 게임에서 특정한 번호의 두 참가자가 만날 때 까지 몇 번의 경기를 진행해야 하는지 횟수를 구하는 문제이다.  처음에 참가자들은 1부터 N까지 번호를 받는다.그리고 다음 라운드에 진출한 참가자들은 다시 1부터 N/2 까지의 번호를 받는다. 입출력 예N=8, A=4, B=7 이 경우 8명의 참가자들이 경기를 할 때 4번 선수와 7번 선수가 만날 때까지의 경기 횟수를 아래 그림으로 그려 보았다.각 라운드에서 4번과 7번은 항상 이겨서 다음 라운드로 진출한다고 가정하고 풀어야 하는 문제이다.4번과 7번은 계속 이겨서 다음 라운드로 진출한다4번은 3번을 이기고, 1 또는 2번을 이겨서 총 2번 이긴다7번은 8번을 이기고, 5 또는 6번을 이겨서 총 ..
📑 1. 문제설명💡 2. 풀이 과정문제 예시처럼 5*5 격자가 있다고 가정 해 보면 격자의 가장 아래 칸부터 인형이 차곡차곡 쌓여 있고, 가장 위에 있는 인형을 집어 올릴 수 있다. 이 문제에서 "집어 올린 인형은 바구니에 쌓이는데 바구니의 가장 아래 칸부터 인형이 순서대로 쌓인다."라는 부분을 보면 스택 문제인 걸 바로 알 수 있다. 게임화면이나 바구니를 스택이라고 생각하면 된다. 문제는 board 배열을 스택으로 변환시키는 것이 어렵다. 만약에 값이 0이 들어오면 빈 칸이기 때문에 스택에 넣지 않는다. 그리고 크레인이 인형을 꺼내는 것은 stack.pop()으로 구현할 수 있다. 인형뽑기 게임 로직 1. 바구니가 빈 경우 -> 무조건 푸시2. 바구니가 비지 않은 경우  2-1. 바구니의 가장 위에..
📑 1. 문제설명10진수를 입력받아 2진수로 변환해 반환하는 solution() 함수를 구현하세요 제약조건decimal은 1이상 10억 미만의 자연수입출력 예decimalreturn10101027110111234511000000111001 💡 2. 풀이 과정10진수를 2진수로 표현하는 과정은 이미 수학적으로 증명된 것이기 때문에 간단하게 적는다.10진수 N을 2로 나눈 나머지, 즉 %2 연산을 한 값을 저장하고, N은 다시 2로 나눈다.몫이 0이 아니라면 나머지를 버리고 다시 1을 수행한다모든 과정이 끝나고 1에서 저장한 수를 뒤부터 순서대로 가져와 붙인다.  예를 들어 십진수 13을 위 과정대로 2진수로 변환하는 모습은 위 그림과 같다. 13을 2로 나누어가면서 나눈 나머지를 순서대로 저장한 후, ..
📑 1. 문제설명💡 2. 접근방식 1. 평일 체크startday를 기준으로 평일(월~금)의 인덱스를 isWeekday 배열에 저장한다. (틀림) - 인덱스가 고정됨startday + j를 통해 현재 요일을 직접 계산해서 startday에 따라 요일이 동적으로 변하게 해야 한다. % 7 연산으로 월금(15)만 검사하고 주말(0,6)은 출근시간 체크에서 제외하도록 한다.2. 직원별 출근 기록 확인schedules[i] + 10을 기준으로 평일의 출근 기록을 확인한다. - 이 때 시간이 60분이 넘어가는 경우 +40을 해서 HHMM맞게 시간이 표시될 수 있도록 정확한 시간 보정을 해 준다. 하나라도 지각한 경우(출근 시각 > 인정 시각), 해당 직원은 상품을 받을 수 없다.모든 평일을 지각하지 않았다면..
인절미였던것
'Java' 태그의 글 목록 (8 Page)
상단으로