프로그래머스
프로그래머스 - 다음 큰 숫자
1. 문제 자연수 n이 주어졌을 때, n의 다음 큰 숫자는 다음과 같이 정의 합니다. 조건 1. n의 다음 큰 숫자는 n보다 큰 자연수 입니다. 조건 2. n의 다음 큰 숫자와 n은 2진수로 변환했을 때 1의 갯수가 같습니다. 조건 3. n의 다음 큰 숫자는 조건 1, 2를 만족하는 수 중 가장 작은 수 입니다. 예를 들어서 78(1001110)의 다음 큰 숫자는 83(1010011)입니다. 자연수 n이 매개변수로 주어질 때, n의 다음 큰 숫자를 return 하는 solution 함수를 완성해주세요. 제한 사항 n은 1,000,000 이하의 자연수 입니다. 2. 접근 방식 매개 변수로 전해지는 n의 값을 이진수로 변환을 하고, n값부터 1씩 증가시켜서 완전 탐색을 하면 시간초과가 날 것이라 생각했다. ..
프로그래머스 - 올바른 괄호
1. 문제 https://school.programmers.co.kr/learn/courses/30/lessons/12909 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 2. 접근 방식 Stack으로 문제를 접근하면 어렵지 않게 풀 수 있다. 다만 for문이 끝나고 stack이 비워져 있는지 확인을 해야 한다. 그리고 Stack을 이용하지 않아도 풀 수 있는 방법이 있어 가져와 봤다. class Solution { boolean solution(String s) { boolean answer = false; int count = 0; for(int i ..
프로그래머스 - 가장 큰 정사각형 찾기
1. 문제 https://school.programmers.co.kr/learn/courses/30/lessons/12905 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 2. 접근 방식 기초적인 DP 문제다. 다만 주의해야 할 예외사항 2가지가 있다. 첫째, 행 또는 열의 길이가 1인 경우. 이 부분의 경우 return 값을 1로 처리했지만 사실 모든 값이 0이라면 0을 반환하는게 맞다. 하지만 테스트 케이스 중에 이 경우가 없는 듯 하다. 즉, 정석적인 방법이라 보긴 힘들듯 하다. 둘째, 모든 숫자가 0으로 이루어진 경우다. 초기 값을 0 으로 초기화..

프로그래머스 - 2*n 타일링
1. 문제 문제 설명 가로 길이가 2이고 세로의 길이가 1인 직사각형모양의 타일이 있습니다. 이 직사각형 타일을 이용하여 세로의 길이가 2이고 가로의 길이가 n인 바닥을 가득 채우려고 합니다. 타일을 채울 때는 다음과 같이 2가지 방법이 있습니다. 타일을 가로로 배치 하는 경우 타일을 세로로 배치 하는 경우 예를들어서 n이 7인 직사각형은 다음과 같이 채울 수 있습니다. 직사각형의 가로의 길이 n이 매개변수로 주어질 때, 이 직사각형을 채우는 방법의 수를 return 하는 solution 함수를 완성해주세요. 제한사항 가로의 길이 n은 60,000이하의 자연수 입니다. 경우의 수가 많아 질 수 있으므로, 경우의 수를 1,000,000,007으로 나눈 나머지를 return해주세요. 2. 접근 방식 처음 문..
프로그래머스 - 게임 맵 최단거리
1. 문제 https://school.programmers.co.kr/learn/courses/30/lessons/1844 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 2. 접근 방식 최단거리를 구하는 문제여서 BFS를 사용했다. DFS로도 풀 수는 있지만 통과가 될진 모르겠다. 방문 배열을 따로 만들지 않고 maps의 값을 누적하는 방법으로 풀었다. 3. 구현 import java.util.*; class Solution { static int[] ax = {1,-1,0,0}; static int[] ay = {0,0,1,-1}; public int ..
프로그래머스 - 디펜스 게임
1. 문제 https://school.programmers.co.kr/learn/courses/30/lessons/142085 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 2. 접근 방식 우선순위 큐를 이용해 풀어야한다. 3. 구현 import java.util.*; class Solution { public int solution(int n, int k, int[] enemy) { int answer = 0; // 라운드 수가 무적권 수 이하이면 탐색할 필요가 없기에 바로 종료 if (enemy.length