programmers

    [java] 프로그래머스 (JadenCase 문자열 만들기) Level 2

    Problem : https://programmers.co.kr/learn/courses/30/lessons/12951 코딩테스트 연습 - JadenCase 문자열 만들기 JadenCase란 모든 단어의 첫 문자가 대문자이고, 그 외의 알파벳은 소문자인 문자열입니다. 문자열 s가 주어졌을 때, s를 JadenCase로 바꾼 문자열을 리턴하는 함수, solution을 완성해주세요. 제한 조건 programmers.co.kr Approach 처음에는 공백문자(" ") 한 칸을 기준으로 split을 하여 첫 문자만 UpperCase로 나머지는 LowerCase로 하여 반환하였다. 그런데 공백문자가 한 칸이 아닌 두 칸이상 공백문자가 연속된 테스트케이스가 존재하여 이 방법은 잘못됐다. 그래서 일단 주어진 문자열..

    [java] 프로그래머스 (행렬의 곱셈) Level 2

    Problem : https://programmers.co.kr/learn/courses/30/lessons/12949 코딩테스트 연습 - 행렬의 곱셈 [[2, 3, 2], [4, 2, 4], [3, 1, 4]] [[5, 4, 3], [2, 4, 1], [3, 1, 1]] [[22, 22, 11], [36, 28, 18], [29, 20, 14]] programmers.co.kr Approach 행렬의 곱셈을 수행하여 그 결과 행렬을 반환하는 문제이다. 간단하게 i x k 행렬 A와 k x j 행렬 B를 곱하면 결과 행렬은 i x j 행렬 C이고, C[x][z] += A[x][y] * B[y][z] (x = 0...i, y = 0...k, z = 0...j) 이다. 위의 곱셈식을 이용하여 구현하면 된다...

    [java] 프로그래머스 (피보나치 수) Level 2

    Problem : https://programmers.co.kr/learn/courses/30/lessons/12941 코딩테스트 연습 - 최솟값 만들기 길이가 같은 배열 A, B 두개가 있습니다. 각 배열은 자연수로 이루어져 있습니다. 배열 A, B에서 각각 한 개의 숫자를 뽑아 두 수를 곱합니다. 이러한 과정을 배열의 길이만큼 반복하며, 두 수를 곱 programmers.co.kr Approach 간단히 DP를 이용하여 n번째 피보나치 수 % 1234567를 구하는 문제이다. Code public class Fibonacci { public static void main(String[] args) { int n = 5; Fibonacci f = new Fibonacci(); System.out.pri..

    [java] 프로그래머스 (최솟값 만들기) Level 2

    Problem : https://programmers.co.kr/learn/courses/30/lessons/12941 코딩테스트 연습 - 최솟값 만들기 길이가 같은 배열 A, B 두개가 있습니다. 각 배열은 자연수로 이루어져 있습니다. 배열 A, B에서 각각 한 개의 숫자를 뽑아 두 수를 곱합니다. 이러한 과정을 배열의 길이만큼 반복하며, 두 수를 곱 programmers.co.kr Approach 두 배열 A, B를 둘다 정렬 한 후, (A의 최솟값 ) * (B의 최댓값) 들을 곱하여 더하는 방법이 문제에서 말한 최솟값이 된다. 정확히 그런 것이 맞는지도 모르겠지만 왠지 그럴 것 같아 그렇게 풀이를 했는데 테스트를 통과하였다. Code import java.util.Arrays; public clas..

    [java] 프로그래머스 (최댓값과 최솟값) Level 2

    Problem : https://programmers.co.kr/learn/courses/30/lessons/12939 코딩테스트 연습 - 최댓값과 최솟값 문자열 s에는 공백으로 구분된 숫자들이 저장되어 있습니다. str에 나타나는 숫자 중 최소값과 최대값을 찾아 이를 (최소값) (최대값)형태의 문자열을 반환하는 함수, solution을 완성하세요. 예를 programmers.co.kr Approach 주어진 문자열 s가 공백으로 구분되어져 있으므러 공백문자(" ")를 기준으로 split한 뒤, 각각의 요소들에 접근하여 최댓값과 최솟값을 갱신하면 되는 간단한 문제이다. Code public class MaxValueAndMinValue { public static void main(String[] arg..

    [java] 프로그래머스 (이진 변환 반복하기) Level 2

    Problem : https://programmers.co.kr/learn/courses/30/lessons/70129 코딩테스트 연습 - 이진 변환 반복하기 programmers.co.kr Approach 월간 코드 챌린지 시즌1의 문제이며, 문자열을 처리하는 문제이다. x의 모든 0을 제거합니다. x의 길이를 c라고 하면, x를 c를 2진법으로 표현한 문자열로 바꿉니다. 위의 두가지를 반복하면서 변환 횟수, 제거된 0의 개수를 세어서 반환하면 된다. 따로 설명이 필요없고 구현 문제기 때문에 코드를 보면서 문자열을 처리하는 방법을 익히는 것이 좋을 것 같다. Code public class BinaryConversion { public static void main(String[] args) { Str..

    [java] 프로그래머스 (숫자의 표현) Level 2

    Problem : https://programmers.co.kr/learn/courses/30/lessons/12924 코딩테스트 연습 - 숫자의 표현 Finn은 요즘 수학공부에 빠져 있습니다. 수학 공부를 하던 Finn은 자연수 n을 연속한 자연수들로 표현 하는 방법이 여러개라는 사실을 알게 되었습니다. 예를들어 15는 다음과 같이 4가지로 표현 할 programmers.co.kr Approach naive한 방법으로는 1부터 연속된 몇개의 숫자를 더해서 주어진 숫자 n을 만들 수 있는지를 검사하는 방법이다. 그러나 수학에서 주어진 자연수를 연속된 자연수의 합으로 표현하는 방법의 수는 주어진 수의 홀수 약수의 개수와 같다.는 정수론 정리가 존재한다. 따라서 위의 정리를 알았다면 문제 풀이가 더 쉬웠을 ..

    [java] 프로그래머스 (폰켓몬) Level 2

    Problem : https://programmers.co.kr/learn/courses/30/lessons/1845 코딩테스트 연습 - 폰켓몬 당신은 폰켓몬을 잡기 위한 오랜 여행 끝에, 홍 박사님의 연구실에 도착했습니다. 홍 박사님은 당신에게 자신의 연구실에 있는 총 N 마리의 폰켓몬 중에서 N/2마리를 가져가도 좋다고 했습니다. programmers.co.kr Approach N개의 폰켓몬 중 N / 2개의 폰켓몬을 최대 종류로 가져가는 법을 찾는 문제이다. 간단하게 N개의 포켓몬을 모두 set에 넣는다. 그런 후 set의 size가 N / 2보다 작으면 set의 size를 반환하면 되고, 아니라면 N / 2를 반환하면 된다. 간단한 문제이다. Code import java.util.Arrays; ..

    [java] 프로그래머스 (땅따먹기) Level 2

    Problem : https://programmers.co.kr/learn/courses/30/lessons/12913 코딩테스트 연습 - 땅따먹기 땅따먹기 게임을 하려고 합니다. 땅따먹기 게임의 땅(land)은 총 N행 4열로 이루어져 있고, 모든 칸에는 점수가 쓰여 있습니다. 1행부터 땅을 밟으며 한 행씩 내려올 때, 각 행의 4칸 중 한 칸만 밟 programmers.co.kr Approach 대표적인 DP문제이다. 다음 위치의 땅으로 가는 경우의 수는 바로 위 땅을 제외한 3곳에서 오는 방법이 있다. 따라서 dp[i][j] = Math.max(dp[i - 1][(j + 1) % 4], dp[i - 1][(j + 2) % 4], dp[i - 1][(j + 3) % 4]) + land[i][j] 이다..

    [java] 프로그래머스 (다음 큰 숫자) Level 2

    Problem : https://programmers.co.kr/learn/courses/30/lessons/12911 코딩테스트 연습 - 다음 큰 숫자 자연수 n이 주어졌을 때, n의 다음 큰 숫자는 다음과 같이 정의 합니다. 조건 1. n의 다음 큰 숫자는 n보다 큰 자연수 입니다. 조건 2. n의 다음 큰 숫자와 n은 2진수로 변환했을 때 1의 갯수가 같습니 programmers.co.kr Approach 자바에선 10진수로 표현된 숫자를 2진수로 변환 했을때의 1비트의 개수를 세어주는 Integer.bitCount() 메소드가 있어 편하게 문제를 풀이할 수 있다. 주어진 숫자 n을 1씩 증가시킨 숫자의 1비트의 개수가 n의 1비트의 개수와 같으면 그 숫자를 반환한다. Code public clas..