[프로그래머스,Level 1] 짝수와 홀수(JAVA 구현)
·
CodingTest/프로그래머스(Programmers)
- 첫 풀이 및 정답풀이 간단한 짝, 홀 구분 문제이다. class Solution { public String solution(int num) { String answer = ""; answer = num % 2 == 0 ? "Even" : "Odd"; return answer; } }
[프로그래머스,Level 1] 최대공약수와 최소공배수(JAVA 구현)
·
CodingTest/프로그래머스(Programmers)
- 첫 풀이 및 정답풀이 최소 공약수와 최소공배수를 수학적으로 구하는 방법은 알고 있었지만, 별도의 알고리즘이 존재하는지 알아보았더니 '유클리드 호제법'이라는 알고리즘에 대해서 알 수 있었다. 최대공약수와 최소공배수의 개념 및 유클리드 호제법에 대한 설명은 아래 블로그를 참고하면 좋을 것 같다. 정수론 (1) - 최대공약수, 최소공배수, 유클리드 호제법 안녕하세요, Dimen입니다! 오늘부터 정수론에 대한 글을 써보고자 합니다. 정수론은 정규 수학 교육과정에서 잘 다루지 않기 때문에 많은 분들에게 생소한 분야입니다. 그런 만큼 많은 분들에게 dimenchoi.tistory.com class Solution { public int[] solution(int n, int m) { int[] answer = ..
[프로그래머스,Level 1] 콜라츠 추측(JAVA 구현)
·
CodingTest/프로그래머스(Programmers)
- 첫 풀이 처음 풀이에 간단하다고 생각되어 바로 홀, 짝에 따른 연산처리를 작성한 뒤, 실행했을 때 예제 1,2번은 통과 처리를 했지만, 예제 3번의 경우 연산 횟수가 500번이 넘어 -1이 반환되어야 하지만 488번으로 1이 되는 것을 보고 무엇이 잘못 되었는지 고민해보았는데, 해결할 수 없어 검색을 했다. class Solution { public int solution(int num) { int answer = 0; // 1. num이 1이 아니면 반복. while(num != 1){ // 2. 연산횟수가 500이면 -1 반환. if(answer == 500){ answer = -1; break; } // 3. 짝수인 경우. if(num % 2 == 0) { num/=2; answer++; } /..
[프로그래머스,Level 1] 평균 구하기(JAVA 구현)
·
CodingTest/프로그래머스(Programmers)
- 첫 풀이 및 정답풀이 class Solution { public double solution(int[] arr) { double answer = 0; int sum = 0; // 1. 모든 원소 합. for(int i = 0; i
[프로그래머스,Level 1] 핸드폰 번호 가리기(JAVA 구현)
·
CodingTest/프로그래머스(Programmers)
- 첫 풀이 및 정답풀이 주어진 전화번호 문자열의 가장 뒤의 4자리만 원래의 숫자를 표시해야 한다. 입력 예제 1번을 살펴보면, 문자열 phone_number를 인덱스 단위로 0 ~ 10까지 11의 길이를 가지고 있다. 이 중 맨 뒤의 4자리를 살리기 위해 11-4 = 7번 인덱스부터 문자열 끝까지를 그대로 살리고, 나머지 인덱스는 *표를 입력하면 된다. class Solution { public String solution(String phone_number) { String answer = ""; // 문자열 길이만큼 반복 for(int i =0;i
[프로그래머스,Level 1] 하샤드 수(JAVA 구현)
·
CodingTest/프로그래머스(Programmers)
- 첫 풀이 및 정답풀이 하샤 드 수를 판별하기 위해서는 각 자릿수를 추출하는 것이 핵심이라고 생각한다. 각 자릿수를 추출한 뒤 모두 더해 x와 나누어 떨어지는지 여부를 확인하면 된다. class Solution { public boolean solution(int x) { boolean answer = true; int sum = 0; // 자릿수의 합 int n = x; // 나누기 위해 x 값을 저장해둔다. while(x != 0){ // x가 0이 될 때 까지 각 자릿수를 추출해 더해준다. sum+= x % 10; x /= 10; } // 나누어 떨어지면 하샤드 수 if(n % sum == 0) return answer; // 아니면 false 반환. return false; } }
[프로그래머스,Level 1] 행렬의 덧셈(JAVA 구현)
·
CodingTest/프로그래머스(Programmers)
- 첫 풀이 및 정답풀이 동일한 크기의 2차원 배열 arr1, arr2의 각 원소들을 더해 answer 2차원 배열에 저장 후 반환하면 된다. class Solution { public int[][] solution(int[][] arr1, int[][] arr2) { int[][] answer = new int [arr1.length][arr1[0].length]; for(int i =0;i
[프로그래머스,Level 1] x만큼 간격이 있는 n개의 숫자(JAVA 구현)
·
CodingTest/프로그래머스(Programmers)
- 첫 풀이 및 정답풀이 이 문제의 핵심은 n크기의 배열에 x ~ x * n의 정수들을 저장해 반환하면 된다는 것이다. 우선 첫 번째 원소는 무조건 x이기 때문에 x로 초기화 후, x만큼 지속적으로 증가시켜주면 된다. class Solution { public long[] solution(int x, int n) { long[] answer = new long[n]; // 1. 배열의 시작은 x answer[0] = x; // 2. 다음 원소부터는 이전 원소 + x for(int i =1;i
[프로그래머스,Level 1] 직사각형 별찍기(JAVA 구현)
·
CodingTest/프로그래머스(Programmers)
- 첫 풀이 및 정답풀이 백준에서 많이 풀어본 별 찍기 문제로 간단하게 풀 수 있었다. import java.util.Scanner; public class Solution { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int a = sc.nextInt(); // 가로 int b = sc.nextInt(); // 세로 // 행의 수 반복 for(int i=0;i
[프로그래머스,Level 1] 2016년(JAVA 구현)
·
CodingTest/프로그래머스(Programmers)
- 첫 풀이 및 정답풀이 처음 문제의 접근을 달력을 그려보며 파악하긴 했지만, 매 달이 며칠까지 있는지를 생각해내지 못해 고민을 좀 했다. 매 달 며칠인지는 우리가 어려서부터 손을 사용해 많이 세 보았듯이, 정해진 일수가 존재한다. 이후 문제에서 1월 1일이 금요일이라고 주어졌기 때문에 7일까지 토, 일, 월, 화, 수 순으로 반복되며, 이를 활용해 예제를 본다면 5월의 이전인 1~4월까지의 총 일수와 5월의 24일을 더해주어 7로 나눈 나머지에 따라 요일을 구할 수 있었다. 단, 필자의 풀이 방식에서는 7일의 배수인 경우 나머지가 0이 나오는데, 이는 모두 목요일에 해당된다는 점만 주의하면 된다. class Solution { public String solution(int a, int b) { // ..