목록Java Note/Algorithmus (48)
럿고의 개발 노트
[프로그래머스] 코딩테스트 연습 실패율 간략한 문제 풀이 지금까지 풀었던 Level1 문제중 가장 어려웠습니다. 처음 생각한 구현 방법은 '스테이지에 도달한 플레이어 수'를 구하고, '스테이지에 도달했으나 아직 클리어하지 못한 플레이어의 수'를 구하고 실패율을 구해서 정렬을 이용해 답을 도출해나갈려고 했습니다. 사실 처음부터 Stage라는 객체로 포장할 생각은 없었지만, 처음에 정렬과 수많은 자료구조들이 존재하게 되어서 싹다 지우고 다시 진행하게 되었습니다. 두번째 구현방법은 객체에 포장을 해서 실패율로 객체를 정렬하는 방법을 고민하였고, 검색 결과에 나온 대로 코드를 구현하였습니다. 두번째 구현 방법으로는 테스트 케이스들을 통과하기 시작했는데, 몇개에서 오류가 발생하게 되었..
[프로그래머스] 코딩테스트 연습 비밀지도 간략한 문제 풀이 2017년 카카오 신입 공채 1차 코딩 테스트 문제입니다. 카카오 신입 공채 1차 코딩 테스트 문제 해설 OR 비트 연산과 2진수에 대한 지식만 있다면, 어렵지 않게 풀수 있는 문제인 것 같습니다. 처음 생각한 코딩 방향과 일치하도록 설계를 했지만, 10진수를 2진수로 변환하면, 앞에 있는 '0'들은 생략이 되버립니다. Ex) 실제값 : 0000 1011 -> 출력값 : 1011 이 부분을 구현하는 데 처음에는 String.format을 사용하여 0을 추가했지만, 이상하게 값이 변경을 하는 바람에, while문으로 매개변수로 주어진 n과 변 문자열의 길이가 다르면 공백을 앞에 추가하도록 하였습니다. 문자열을 연산해야 하는 경우가 많..
[프로그래머스] 코딩테스트 연습 예산 간략한 문제 풀이 처음 문제를 읽어보고 들었던 생각은 작은 수 부터 넣다가 예산에서 벗어나면 그게 제일 많이 지원할 수 있는 길이 아닐까 생각해서 코드 방향을 그렇게 잡았습니다. 다행이게도 처음에 생각한 방향이 맞았으며, 배열을 정렬하여 작은 수부터 더하면서 부서 수를 세었고, 최대 예산과 비교하여 더 크면 그때 for문을 빠져나가도록 구현하였습니다 Arrays.sort() public static void sort(int[] a) 매개변수(Parameters)로 들어온 배열을 오름차순으로 정렬합니다. github 문제 및 풀이 문제 설명 S사에서는 각 부서에 필요한 물품을 지원해 주기 위해 부서별로 물품을 구매하는데 필요한 금액을 조사했습니다. 그러나, 전체 예산이..
[프로그래머스] 코딩테스트 연습 직사각형 별찍기 간략한 문제 풀이 쉽게 풀수 있었고, for문 예제중 가장 기본적인 별찍기 문제였습니다., Github 문제 및 풀이 문제 설명 이 문제에는 표준 입력으로 두 개의 정수 n과 m이 주어집니다. 별(*) 문자를 이용해 가로의 길이가 n, 세로의 길이가 m인 직사각형 형태를 출력해보세요. 제한 조건 n과 m은 각각 1000 이하인 자연수입니다. 예시 입력 5 3출력 ***** ***** *****import java.util.Scanner; /** * @ClassName : RectangleStar * @ProblemName : 직사각형 별찍기 * @URL : https://programmers.co.kr/learn/courses/30/lessons/12969..
[프로그래머스] 코딩테스트 연습 x만큼 간격이 있는 n개의 숫자 간략한 문제 풀이 어렵지 않았던 문제입니다. 크게 설명할 내용은 없어 보입니다. github 문제 및 풀이 문제 설명 함수 solution은 정수 x와 자연수 n을 입력 받아, x부터 시작해 x씩 증가하는 숫자를 n개 지니는 리스트를 리턴해야 합니다. 다음 제한 조건을 보고, 조건을 만족하는 함수, solution을 완성해주세요. 제한 조건 x는 -10000000 이상, 10000000 이하인 정수입니다. n은 1000 이하인 자연수입니다. 입출력 예 x n answer 2 5 [2,4,6,8,10] 4 3 [4,8,12] -4 2 [-4, -8] import java.util.Arrays; /** * @ClassName : XInterva..
[프로그래머스] 코딩테스트 연습 행렬의 덧셈 간략한 문제 풀이 2차원 배열을 이해하기 쉬운 문제이지만, 제가 푼 코드는 조금 깔끔해보이지 않는 코드인 것 같습니다. 크게 설명할 부분은 없는 문제인 듯합니다. github 문제 및 풀이 문제 설명 행렬의 덧셈은 행과 열의 크기가 같은 두 행렬의 같은 행, 같은 열의 값을 서로 더한 결과가 됩니다. 2개의 행렬 arr1과 arr2를 입력받아, 행렬 덧셈의 결과를 반환하는 함수, solution을 완성해주세요. 제한 조건 행렬 arr1, arr2의 행과 열의 길이는 500을 넘지 않습니다. 입출력 예 arr1 arr2 return [[1,2],[2,3]] [[3,4],[5,6]] [[4,6],[7,9]] [[1],[2]] [[3],[4]] [[4],[6]] i..
[프로그래머스] 코딩테스트 연습 핸드폰 번호 가리기 간략한 문제 풀이 String.substring() public String substring(int beginIndex, int endIndex) 문자열을 자르는 메소드로, 시작 위치(beginIndex)와 끝 위치(endIndex - 1)까지의 문자열을 반환합니다. beginIndex가 음수이거나, endIndex의 길이가 String객체의 length보다 크다면 IndexOutOfBoundsException이 발생 github 문제 및 풀이 문제 설명 프로그래머스 모바일은 개인정보 보호를 위해 고지서를 보낼 때 고객들의 전화번호의 일부를 가립니다. 전화번호가 문자열 phone_number로 주어졌을 때, 전화번호의 뒷 4자리를 제외한 나머지 숫자를..
[프로그래머스] 코딩테스트 연습 하샤드 수 간략한 문제 풀이 예전에 풀었던 자리수 더하기과 흡사합니다. 조건식 하나만 더 추가하면 끝나는 문제로, 자리수 더하기 문서를 확인해주세요. github 문제 및 풀이 문제 설명 양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다. 예를 들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다. 자연수 x를 입력받아 x가 하샤드 수인지 아닌지 검사하는 함수, solution을 완성해주세요. 제한 조건 x는 1 이상, 10000 이하인 정수입니다. 입출력 예 arr return 10 true 12 true 11 false 13 false 입출력 예 설명 입출력 예 #1 10의 모든 자릿수의 합은 1입니다..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/b3rcIC/btqBEASojue/Kyq23bGPJiMJdEuidD211K/img.png)
[프로그래머스] 코딩테스트 연습 평균 구하기 간략한 문제 풀이 stream은 코드가 간결해지지만, 속도는 느리다는 것을 또 한번 느끼게 된다. 그래도 stream으로 작성을 해본 이유는 코딩테스트 연습은 API를 효율적으로 쓰기 위해서 하기 때문입니다. 어려운 문제가 아니기 때문에 크게 설명할 것은 없을 꺼 같습니다. for문 효울성 stream문 효율성 Stream average() 메소드 Stream안에 있는 값들의 평균을 구할 수 있는 메소드입니다. Stream getAsDouble() 메소드 값이 있다면 Double로 변환하며, 그렇지 않으면 throw NoSuchElementException을 합니다. stream 결과값을 Double로 반환해주는 메소드 입니다. github 문제 및 풀이 문제..