목록LV2 (37)
기록방
👉 문제링크 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 🔸 문제 분석 🔸 자연수 n의 다음 큰 숫자를 구한다. 다음 큰 숫자는 3가지로 정의한다. n보다 큰 자연수 2진수로 변환했을 때 n과 다음 큰 숫자의 1의 개수가 같다. 다른 두 조건을 만족하는 가장 작은 수 🔸 문제 풀이 🔸 n을 2진수 변환 후 1의 개수를 세서 저장한다. n을 1씩 증가해가며 다음 큰 숫자의 정의를 만족하는지 확인한다. 2진수 문자열의 1의 개수를 세는 부분에서 최적화가 필요하다. 🔸 코드 🔸 class Solution { public int solution(int n) {..
👉 문제링크 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 🔸 문제 분석 🔸 자연수 n이 입력된다. 연속된 자연수들의 합으로 n을 만들 수 있는 경우의 수를 반환한다. 🔸 문제 풀이 🔸 연속된 자연수들의 첫 값을 1부터 n까지 늘려간다. 연속으로 자연수들을 더해가며 n이 되면 카운트를 늘리고, n을 넘으면 더하기를 멈추고 다음 첫 값부터 계산한다. 🔸 코드 🔸 class Solution { public int solution(int n) { int answer = 0; for(int i = 1; i
👉 문제링크 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 🔸 문제 분석 🔸 0과 1로 이루어진 문자열 s에서 0을 제거하고 그 개수를 누적한다. 1로만 이루어진 새 문자열 s`의 길이를 구한다. s`의 길이를 다시 2진수로 바꿔 s로 사용한다. s가 "1"이 될 때까지 반복하고, 반복 횟수와 제거한 0의 수를 반환한다. 🔸 문제 풀이 🔸 문제 분석을 그대로 구현한다. 0의 제거와 2진수 변환을 효율적으로 해야한다. s가 "1"이 되었는지 확인하는 것 보다, 길이가 1이 되었는지 확인하면 편하다. 🔸 코드 🔸 class Solution { public i..
👉 문제링크 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 🔸 문제 분석 🔸 열린 괄호( '(' )와 닫힌 괄호( ')' ) 로 이루어진 문자열 s를 입력받는다. 열린 괄호와 닫힌 괄호가 올바르게 쌍을 이루는 문자열인지 판단해 true나 false를 반환한다. 🔸 문제 풀이 🔸 전형적인 스택형 문제지만, 스택으로 풀면 비효율적이다. 열린 괄호가 나오면 카운트를 +1한다. 닫힌 괄호가 나오면 카운트를 -1한다. 카운트가 음수가 되면 올바르지 않은 문자열이다. 🔸 코드 🔸 class Solution { boolean solution(String s) { bo..
👉 문제링크 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 🔸 문제 분석 🔸 길이가 같은 정수형 배열 A와 B가 입력된다. A와 B의 원소를 각각 하나씩 곱한 후 누적한 값의 최소값을 출력한다. 🔸 문제 풀이 🔸 원소곱의 누적합이 최소가 되려면, 가장 큰 수를 가장 작은 수와 곱해야 한다. 그리디적인 관점이라고 할 수 있다. A와 B배열을 오름차순 정렬한다. 아직 사용하지 않은 원소중에서 가장 큰 수와 반대편의 배열의 가장 작은수를 곱해 누적하는 방식으로 계산한다. 🔸 코드 🔸 import java.util.Arrays; class Solution { p..