본문 바로가기
728x90
반응형

JAVA/Programmers133

JAVA 프로그래머스 [나이 출력] 자바 Lv.0 [프로그래머스] 코딩테스트 연습 -> 코딩테스트 입문 -> 나이 출력 https://school.programmers.co.kr/learn/courses/30/lessons/120820 해결 과정 먼저 2000년을 기준으로 생각하기 위해 age에서 2022년도의 22를 빼준후 1을 빼준다. 태어난 년도 계산을 위해 이 값을 2000에서 빼주면 된다. 소스 코드 class Solution { public int solution(int age) { int answer = 0; answer = 2000-(age-22-1); return answer; } } 2023. 5. 26.
JAVA 프로그래머스 [아이스 아메리카노] 자바 Lv.0 [프로그래머스] 코딩테스트 연습 -> 코딩테스트 입문 -> 아이스 아메리카노 https://school.programmers.co.kr/learn/courses/30/lessons/120819 해결 과정 아이스 아메리카노 잔수를 k로 하고, 반복문에서 money를 5500으로 나누었을 때 몫이 0이라면 더이상 살수 없는 경우를 나타내므로 break; 를 이용하여 반복문을 빠져나온다. 반복문을 돌며 money에서 5500을 뺄 때마다 i를 +1해주고 이것을 k(잔수)로 대입해준다. 배열은 k, money로 이루어져 있으므로, 다 구해진 후 answer 배열을 선언하고 초기화해주면 된다. 소스 코드 class Solution { public int[] solution(int money) { int k = 0.. 2023. 5. 26.
JAVA 프로그래머스 [옷가게 할인 받기] 자바 Lv.0 [프로그래머스] 코딩테스트 연습 -> 코딩테스트 입문 -> 옷가게 할인 받기 https://school.programmers.co.kr/learn/courses/30/lessons/120818 해결 과정 if문은 위에서 부터 순차적으로 진행되기 때문에 제일 큰 값부터 진행해준다 단순히 그 조건에 해당하면 기존 price값에 할인율을 적용한 값이 나오도록 곱해진 것을 다시 넣어주고 마지막에 return 해주면 된다. 하지만 아래 두 코드를 보자. 처음에 자꾸 런타임 에러가 발생했다. 다른 사람의 코드를 참고해보니 통과가 나왔다. 여기서 두개의 차이는 *=로 표현하고 안하고 차이인데 왜 결과는 이럴까? 다음 포스트들에서 해답을 찾았다 오호,, https://cinnamonc.tistory.com/m/208 .. 2023. 5. 26.
JAVA 프로그래머스 [피자 나눠 먹기(3)] 자바 Lv.0 [프로그래머스] 코딩테스트 연습 -> 코딩테스트 입문 -> 피자 나눠 먹기(3) https://school.programmers.co.kr/learn/courses/30/lessons/120816 해결 과정 피자 조각 수 : slice 피자를 먹는 사람의 수 : n n명의 사람이 적어도 한 조각씩 먹어야 하므로, 두 가지로 나누어 생각할 수 있다 n을 slice로 나누었을 때 나머지가 0이 아니라면, 피자는 몫 보다 +1을 해야한다. n % slice != 0 일때 피자 개수는 n/slice + 1 소스 코드 class Solution { public int solution(int slice, int n) { int answer = 0; if (n % slice != 0) answer = n / slic.. 2023. 5. 25.
JAVA 프로그래머스 [피자 나눠 먹기(2)] 자바 Lv.0 [프로그래머스] 코딩테스트 연습 -> 코딩테스트 입문 -> 피자 나눠 먹기(2) https://school.programmers.co.kr/learn/courses/30/lessons/120815 해결 과정 피자 한 판은 6조각, 한사람이 먹는 피자의 개수를 i라고 하고 사람수는 n이므로, 6와 n의 최대공약수를 구한다. (gcd) 사람 수 n를 최대공약수인 gcd로 나눠주면 피자가 몇 판이어야하는지 알 수 있다. 소스 코드 class Solution { public int solution(int n) { int answer = 0; int gcd = 0; for(int i =1; i 2023. 5. 25.
JAVA 프로그래머스 [피자 나눠 먹기(1)] 자바 Lv.0 [프로그래머스] 코딩테스트 연습 -> 코딩테스트 입문 -> 피자 나눠 먹기(1) https://school.programmers.co.kr/learn/courses/30/lessons/120814 해결 과정 규칙에 따라서 알아보기 위해 몇가지 예시를 사용해보겠다 1명일 경우 -> 1개 2명일 경우 -> 1개 6명일 경우 -> 1개 7명일 경우 -> 1개, 14명일 경우 -> 2개 21명일 경우 -> 3개 이렇게 7의 배수가 될때마다 피자의 갯수가 하나씩 올라가는 것을 규칙으로 하여 반복문에서 7의 배수가 될때마다 1씩 증가하도록 하면 된다. 여기서 주의해야 할 점은 반복문에서 i0) 필요한 피자의 개수는 n/7 + 1개가 된다. 2023. 5. 25.
JAVA 프로그래머스 [배열의 평균값] 자바 Lv.0 [프로그래머스] 코딩테스트 연습 -> 코딩테스트 입문 -> 배열의 평균값 https://school.programmers.co.kr/learn/courses/30/lessons/120817 해결 과정 배열 원소들의 평균을 구하려면, 배열 모든 원소의 합을 구한 뒤, 배열의 길이로 나눠주면 된다. 배열의 길이는 numbers. length로 사용한다. 소스 코드 class Solution { public double solution(int[] numbers) { double answer = 0; for (int i = 0; i< numbers.length; i++) { answer += numbers[i]; } answer = answer/numbers.length; return answer; } } 2023. 5. 25.
JAVA 프로그래머스 [나머지 구하기] 자바 Lv.0 [프로그래머스] 코딩테스트 연습 -> 코딩테스트 입문 -> 나머지 구하기 https://school.programmers.co.kr/learn/courses/30/lessons/120810 해결 과정 (생략) 소스 코드 class Solution { public int solution(int num1, int num2) { int answer = -1; answer = num1 % num2; return answer; } } 2023. 5. 24.
JAVA 프로그래머스 [최빈값 구하기] 자바 Lv.0 [프로그래머스] 코딩테스트 연습 -> 코딩테스트 입문 -> 최빈값 구하기https://school.programmers.co.kr/learn/courses/30/lessons/120812 해결 과정 이 문제,,, 좀 어려웠다....ㅜ 우선, 빈도수를 구하기 위해 array 배열의 원소를 count 배열에 해당하는 인덱스에 넣는 것을 이용한다. 먼저 array 배열에서 가장 큰 값을 구한 후 거기에 1을 더해주면 count 배열의 크기를 설정할 수 있다. (배열에서 가장 큰 값이 5라고 하면, count배열의 크기는 5+1=6 으로 지정할 수 있다. 이유는 인덱스는 0부터 시작하기 때문. array 배열 에 원소 3이 있다면 이에 해당하는 count 배열의 인덱스는 count[4]) array 배열에서 가.. 2023. 5. 24.
JAVA 프로그래머스 [중앙값 구하기] 자바 Lv.0 [프로그래머스] 코딩테스트 연습 -> 코딩테스트 입문 -> 중앙값 구하기 https://school.programmers.co.kr/learn/courses/30/lessons/120811 해결 과정 배열의 길이가 홀수라는 조건이 있으므로 짝수는 고려하지 않는다. 우선 배열을 Arrays.sort(array); 로 정렬해주고, 배열의 중앙값을 찾아야하기 때문에 해당 인덱스를 배열의 길이/2 로 나타낼 수 있다; answer = array[array.length/2]; 소스코드 import java.util.Arrays; class Solution { public int solution(int[] array) { int answer = 0; Arrays.sort(array); answer = array[a.. 2023. 5. 24.
JAVA 프로그래머스 [짝수는 싫어요] 자바 Lv.0 [프로그래머스] 코딩테스트 연습 -> 코딩테스트 입문 -> 짝수는 싫어요 https://school.programmers.co.kr/learn/courses/30/lessons/120813 해결 과정 if (n % 2 == 0) { int[] arr = new int[n/2]; } else { int[] arr = new int[n/2+1]; } 이렇게 하면 런타임 오류가 발생한다. 하지만 다음과 같이 실행하면 오류가 발생하지 않는다 int[] arr; if (n % 2 == 0) { arr = new int[n/2]; } else { arr = new int[n/2+1]; } 이유는 무엇일까? 암튼 그렇게 배열 arr의 길이를 정해준 후, 인덱스를 위해 int k = 0 초기화해주고 반복문을 돌면서 홀.. 2023. 5. 24.
JAVA 프로그래머스 [숫자 비교하기] 자바 Lv.0 [프로그래머스] 코딩테스트 연습 -> 코딩테스트 입문 -> 숫자 비교하기 https://school.programmers.co.kr/learn/courses/30/lessons/120807 해결 과정 단순히 두 매개변수가 같으면 1을 return 하고 다르면 -1을 return하면 되기 때문에 조건문을 사용하면, num1 == num2 일 경우 return 1; 아닐 경우 return -1; 이 풀이를 토대로 간단하게 해결 할 수 있다. 소스 코드 class Solution { public int solution(int num1, int num2) { int answer = 0; if (num1 == num2) { return 1; } else { return -1; } } } 2023. 5. 23.
JAVA 프로그래머스 [배열 두 배 만들기] 자바 Lv.0 [프로그래머스] 코딩테스트 연습 -> 코딩테스트 입문 -> 배열 두 배 만들기 https://school.programmers.co.kr/learn/courses/30/lessons/120809 해결 과정 해결 방법은 간단하다. 먼저 return을 위한 배열을 생성한다. (int [ ] answer) 배열의 크기는 numbers의 배열의 크기와 똑같이 생성하면 되기 때문에, numbers.length를 우선 크기만 할당해준다. 그 다음 반복문을 사용하여 number의 원소를 하나씩 짚어가며, 그 원소의 두배 값을 answer 배열에 넣어주면 된다. answer[i] = 2*numbers[i]; 반복문을 배열의 크기만큼 돌고 나면 answer도 모두 원소가 생기게 된다 마지막엔 return answer;로.. 2023. 5. 23.
JAVA 프로그래머스 [분수의 덧셈] 자바 Lv.0 [프로그래머스] 코딩테스트 연습 -> 코딩테스트 입문 -> 분수의 덧셈 https://school.programmers.co.kr/learn/courses/30/lessons/120808 해결 과정 모두가 알 듯, 분수의 덧셈은 통분을 통해 이루어진다. 두 분수의 분모를 똑같이 맞춘 후 그에 알맞게 분자에 곱해주면 된다. 최소공배수를 고려하지 않고 일단 통분을 해보면 공통 분모는 denom1 * denom2 가 된다. 분자는 각각 numer1*denom2, numer2*denom1 이다. 우리는 이 두 분수를 더할 것이기 때문에 더하게 되면, 분모는 denom1 * denom2이고, 분자는 numer1*denom2 + numer2*denom1 이 된다. 우리는 조건에 따라 기약분수로 나타내야 하기 때문에.. 2023. 5. 23.
JAVA 프로그래머스 [두 수의 나눗셈] 자바 Lv.0 [프로그래머스] 코딩테스트 연습 -> 코딩테스트 입문 -> 두 수의 나눗셈 https://school.programmers.co.kr/learn/courses/30/lessons/120806 해결 과정 먼저 answer의 자료형을 나눗셈을 고려하여 double로 선언해준다. 보통의 몫을 구한다면 num1/num2의 결과로 소수점이 버려지겠지만, 본 문제에서는 소수점자리까지 모두 표현해야 하므로 (double)을 형변환을 해주고 1000을 곱해준다. answer = (double) num1/num2 * 1000; 이 결과에 정수부분을 출력해야하므로 다시(int)를 붙혀 형변환을 해줌으로써 소수점을 버릴 수 있다. 이 부분을 return에서 한번에 처리하여 출력한다. return (int)answer; 소스.. 2023. 5. 23.
JAVA 프로그래머스 [두 수의 곱] 자바 Lv.0 [프로그래머스] 코딩테스트 연습 -> 코딩테스트 입문 -> 두 수의 곱 https://school.programmers.co.kr/learn/courses/30/lessons/120804 해결 과정 (생략) 소스 코드 class Solution { public int solution(int num1, int num2) { int answer = 0; answer = num1 * num2; return answer; } } 2023. 5. 22.
JAVA 프로그래머스 [몫 구하기] 자바 Lv.0 [프로그래머스] 코딩테스트 연습 -> 코딩테스트 입문 -> 몫 구하기 https://school.programmers.co.kr/learn/courses/30/lessons/120805 해결 과정 (생략) 소스 코드 class Solution { public int solution(int num1, int num2) { int answer = 0; answer = num1 / num2; return answer; } } 2023. 5. 22.
JAVA 프로그래머스 [두 수의 차] 자바 Lv.0 [프로그래머스] 코딩테스트 연습 -> 코딩테스트 입문 -> 두 수의 차 https://school.programmers.co.kr/learn/courses/30/lessons/120803 해결 과정 (생략) 소스 코드 class Solution { public int solution(int num1, int num2) { int answer = 0; answer = num1 - num2; return answer; } } 2023. 5. 22.
JAVA 프로그래머스 [두 수의 합] 자바 Lv.0 [프로그래머스] 코딩테스트 연습 -> 코딩테스트 입문 -> 두 수의 합 https://school.programmers.co.kr/learn/courses/30/lessons/120802 해결 과정 (생략) 소스 코드 class Solution { public int solution(int num1, int num2) { int answer = -1; answer = num1 + num2; return answer; } } 2023. 5. 22.
728x90
반응형