목록Java (116)
Hayden's Archive
알고리즘 문제 출처 : 프로그래머스 https://programmers.co.kr/learn/courses/30/lessons/12926 코딩테스트 연습 - 시저 암호 어떤 문장의 각 알파벳을 일정한 거리만큼 밀어서 다른 알파벳으로 바꾸는 암호화 방식을 시저 암호라고 합니다. 예를 들어 AB는 1만큼 밀면 BC가 되고, 3만큼 밀면 DE가 됩니다. z는 1만큼 밀면 a가 programmers.co.kr 내가 작성한 코드 아스키코드 숫자값을 활용하여 문제를 풀었다. 아스키코드에서 대문자는 65~90, 소문자는 97~122의 값을 가지는데 들어오는 문자열을 char[] 배열로 변환하여 각각의 문자를 정수로 변환하여 조건문으로 분류한다. 공백은 아스키코드로 0이므로 0일 때는 그냥 지나가게 하고 알파벳일 경우..
알고리즘 문제 출처 : 프로그래머스 https://programmers.co.kr/learn/courses/30/lessons/12921 코딩테스트 연습 - 소수 찾기 1부터 입력받은 숫자 n 사이에 있는 소수의 개수를 반환하는 함수, solution을 만들어 보세요. 소수는 1과 자기 자신으로만 나누어지는 수를 의미합니다. (1은 소수가 아닙니다.) 제한 조건 n은 2이상 programmers.co.kr 내가 작성한 코드(효율성 때문에 여러번 코드를 짰던 문제) 좀처럼 풀이가 생각이 안나서 일단 반복문으로 돌렸다. 자기자신과 같지 않은 수로 나누었을 때 나누어떨어지는 수를 구한 후 집계하고 조금이라도 속도를 빠르게 하기 위해 바로 반복문을 break 시켰다. class Solution { public ..
알고리즘 문제 출처 : 프로그래머스 https://programmers.co.kr/learn/courses/30/lessons/12901 코딩테스트 연습 - 2016년 2016년 1월 1일은 금요일입니다. 2016년 a월 b일은 무슨 요일일까요? 두 수 a ,b를 입력받아 2016년 a월 b일이 무슨 요일인지 리턴하는 함수, solution을 완성하세요. 요일의 이름은 일요일부터 토요일까�� programmers.co.kr 내가 작성한 코드 1월부터 12월까지의 마지막날을 배열 date에 담았고 각 요일을 배열 day에 담았다. 2016년 1월 1일이 금요일이므로 7로 나누었을 때의 나머지가 1이 되는 요일을 금요일로 잡았기에 배열 day의 0번째 값은 목요일이 된다. 먼저 a의 값부터 1~12의 범위로..
알고리즘 문제 출처 : 프로그래머스 https://programmers.co.kr/learn/courses/30/lessons/12982 코딩테스트 연습 - 예산 S사에서는 각 부서에 필요한 물품을 지원해 주기 위해 부서별로 물품을 구매하는데 필요한 금액을 조사했습니다. 그러나, 전체 예산이 정해져 있기 때문에 모든 부서의 물품을 구매해 줄 수는 �� programmers.co.kr 내가 작성한 코드 배열 d를 오름차순으로 배열한 뒤 0번째 인덱스부터 차례대로 더해간다. 더했더니 합이 예산보다 클 경우에는 i를 저장하여 반환하고, 더했더니 예산과 같을 경우에는 i+1을 저장하여 반환하고, 그 외의 값(i보다 작은데 더 이상 더할 수 없는 경우)들은 차례대로 i+1을 저장해간 뒤 반복문이 끝나면 값을 반환..
알고리즘 문제 출처 : https://programmers.co.kr/learn/courses/30/lessons/42576 코딩테스트 연습 - 완주하지 못한 선수 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수�� programmers.co.kr 내가 작성한 코드 처음에는 방법이 생각나지 않아서 0부터 돌리고 서로 일치하는 경우가 생겼을 때 participant 배열의 값을 서로 교환하여 일치하는 값들을 앞으로 차곡차곡 보내는 식으로 로직을 짰다. 이렇게 되면 participant 배열에서 가장 최후로 남는 마지막값이 정답이 되게 된다. class Solut..
출처 : https://programmers.co.kr/learn/courses/30/lessons/42840 코딩테스트 연습 - 모의고사 수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다. 1번 수포자가 찍는 �� programmers.co.kr 내가 작성한 코드 수포자 3명의 찍기 패턴을 p1, p2, p3에 다음과 같이 배열로 담는다. p1은 반복주기가 5, p2는 반복주기가 8, p3는 반복주기가 10이므로 입력되는 인자 배열 answers의 인덱스를 반복주기로 나눈 나머지 인덱스와 맞춰서 값을 비교하면 된다. 그리고 int[] 배열인 count를 둬서 p1이 맞힌 횟수(count[0..
알고리즘 문제 출처 : 프로그래머스 https://programmers.co.kr/learn/courses/30/lessons/12910 코딩테스트 연습 - 나누어 떨어지는 숫자 배열 array의 각 element 중 divisor로 나누어 떨어지는 값을 오름차순으로 정렬한 배열을 반환하는 함수, solution을 작성해주세요. divisor로 나누어 떨어지는 element가 하나도 없다면 배열에 -1을 담아 반환하� programmers.co.kr 내가 작성한 코드 0으로 나눌 경우를 생각해서 ArithmeticException 처리를 했다. 배열은 생성할 때 사이즈부터 정하고 들어가야 해서 사이즈가 얼마나 될지 가늠하기 어려울 때 쓰기 번거롭다. 담을 수량 생각하지 않고 막 담는 바구니로는 Array..
알고리즘 문제 출처 : 프로그래머스 https://programmers.co.kr/learn/courses/30/lessons/12947 코딩테스트 연습 - 하샤드 수 양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다. 예를 들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다. 자연수 x를 입력받아 x가 하� programmers.co.kr 내가 작성한 코드 각 자리수 * 10^n을 계속해서 뺄 것이므로 이 값을 임시로 담을 xTemp라는 변수가 필요했다. 10^n으로 나눈 몫은 quotient에 담았고 이 몫들을 합한 값들은 qTotal에 담았다.(qTotal이 모든 자릿수의 합이 된다) 그 뒤 x로 qTotal를 나누었을 때 나누어..
알고리즘 문제 출처 : 프로그래머스 https://programmers.co.kr/learn/courses/30/lessons/42748 코딩테스트 연습 - K번째수 [1, 5, 2, 6, 3, 7, 4] [[2, 5, 3], [4, 4, 1], [1, 7, 3]] [5, 6, 3] programmers.co.kr 내가 작성한 코드 Arrays의 copyOfRange() 메소드와 Arrays.sort() 메소드를 활용해서 필요한 부분만 잘라서 카피하고 카피한 배열을 오름차순으로 정렬했다. 매번 남의 간결한 코드를 보고 감탄만 하다가 자바 API 뒤적뒤적거리면서 익히게 된 라이브러리 활용해서 코드를 짰는데 가장 상위에 있는 코드와 풀이가 정확히 일치하게 됐다. 알고리즘도 계속 풀다 보면 익숙해지는구나 싶다..
알고리즘 문제 출처 : 프로그래머스 https://programmers.co.kr/learn/courses/30/lessons/12948 코딩테스트 연습 - 핸드폰 번호 가리기 프로그래머스 모바일은 개인정보 보호를 위해 고지서를 보낼 때 고객들의 전화번호의 일부를 가립니다. 전화번호가 문자열 phone_number로 주어졌을 때, 전화번호의 뒷 4자리를 제외한 나머지 숫자 programmers.co.kr 내가 작성한 코드 핸드폰 번호 4자리를 제외한 수만큼의 String 객체를 만들고 빈 값들을 *로 대체해준다. 그 뒤 StringBuffer 객체를 만들고 phone_number에서 자른 숫자만큼 append() 메소드로 붙여주면 뒷번호 4자리만 숫자가 나타난다! class Solution { publi..