JAVA로 코딩테스트 Level.1 문제 풀기 2주 차
2022년 4월 4일 월요일 / 내적
문제 설명
- 길이가 같은 두 1차원 정수 배열 a, b가 매개변수로 주어집니다. a와 b의 내적을 return 하도록 solution 함수를 완성해주세요.
- 이때, a와 b의 내적은 a[0]*b[0] + a[1]*b[1] + ... + a[n-1]*b[n-1] 입니다. (n은 a, b의 길이)
제한사항
- a, b의 길이는 1 이상 1,000 이하입니다.
- a, b의 모든 수는 -1,000 이상 1,000 이하입니다.
입출력 예
a | b | result |
[1,2,3,4] | [-3,-1,0,2] | 3 |
[-1,0,1] | [1,0,-1] | -2 |
입출력 예 설명
- 입출력 예 #1
- a와 b의 내적은 1*(-3) + 2*(-1) + 3*0 + 4*2 = 3 입니다.
- 입출력 예 #2
- a와 b의 내적은 (-1)*1 + 0*0 + 1*(-1) = -2 입니다.
문제 풀이 및 주석
class Solution {
public int solution(int[] a, int[] b) {
int answer = 0;
for(int i = 0; i < a.length; i++) {
answer += a[i] * b[i]; // 같은 인덱스의 a와 b의 내적을 계산
}
return answer;
}
}
내적은 두 배열에서 같은 인덱스끼리 곱한 값을 모두 더한 것으로 for문을 사용하여 같은 인덱스에 들어있는 a와 b의 내적을 합산하였다.
2022년 4월 5일 화요일 / 나머지가 1이 되는 수 찾기
문제 설명
- 자연수 n이 매개변수로 주어집니다. n을 x로 나눈 나머지가 1이 되도록 하는 가장 작은 자연수 x를 return 하도록 solution 함수를 완성해주세요. 답이 항상 존재함은 증명될 수 있습니다.
제한사항
- 3 ≤ n ≤ 1,000,000
입출력 예
n | result |
10 | 3 |
12 | 11 |
입출력 예 설명
1. 입출력 예 #1
- 10을 3으로 나눈 나머지가 1이고, 3보다 작은 자연수 중에서 문제의 조건을 만족하는 수가 없으므로, 3을 return 해야 합니다.
2. 입출력 예 #2
- 12를 11로 나눈 나머지가 1이고, 11보다 작은 자연수 중에서 문제의 조건을 만족하는 수가 없으므로, 11을 return 해야 합니다.
문제 풀이 및 주석
class Solution {
public int solution(int n) {
for (int i = 2; i < n; i++) { // i = 2부터 n까지 반복하며 증가시키기
if (n % i == 1) { // 나머지가 1이 되면 i를 return
return i;
}
}
return n;
}
}
매개변수로 주어진 자연수 n으로 가장 작은 x를 찾기 위해 for문을 사용해 반복하여 증가시켰다. if문을 써 만약 나머지가 1이 되면 i를 return 시켰다.
2022년 4월 6일 수요일 / 문자열을 정수로 바꾸기
문제 설명
- 문자열 s를 숫자로 변환한 결과를 반환하는 함수, solution을 완성하세요.
제한사항
- s의 길이는 1 이상 5이하입니다.
- s의 맨앞에는 부호(+, -)가 올 수 있습니다.
- s는 부호와 숫자로만 이루어져있습니다.
- s는 "0"으로 시작하지 않습니다.
입출력 예
- 예를들어 str이 "1234"이면 1234를 반환하고, "-1234"이면 -1234를 반환하면 됩니다.
str은 부호(+,-)와 숫자로만 구성되어 있고, 잘못된 값이 입력되는 경우는 없습니다.
문제 풀이 및 주석
class Solution {
public int solution(String s) {
int answer = 0;
answer = Integer.parseInt(s); // string을 정수로 변환해주는 parseInt() 메소드
return answer;
}
}
parseInt() 메서드를 사용하여 문자열을 정수로 변환하여 결과를 return 하였다.
2022년 4월 7일 목요일 / 수박수박수박수박수박수?
문제 설명
- 길이가 n이고, "수박수박수박수...."와 같은 패턴을 유지하는 문자열을 리턴하는 함수, solution을 완성하세요. 예를들어 n이 4이면 "수박수박"을 리턴하고 3이라면 "수박수"를 리턴하면 됩니다.
제한사항
- n은 길이 10,000이하인 자연수입니다.
입출력 예
n | trturn |
3 | "수박수" |
4 | "수박수박" |
문제 풀이 및 주석
class Solution {
public String solution(int n) {
String answer = "";
for(int i = 1; i <= n; i++) {
if(i % 2 != 0) answer += "수"; // 2로 나눠 나머지가 0, 짝수이면 "수"
else answer += "박"; // 나머지가 0이 아닐 시, 홀수로 "박"
}
return answer;
}
}
for 문과 삼항 연산자를 사용하여 입력받은 숫자를 2로 나눠 짝수이면 "수", 홀수이면 "박"으로 나오게 출력되도록 return 하였다.
2022년 4월 8일 금요일 / 자릿수 더하기
문제 설명
- 자연수 N이 주어지면, N의 각 자릿수의 합을 구해서 return 하는 solution 함수를 만들어 주세요.
예를들어 N = 123이면 1 + 2 + 3 = 6을 return 하면 됩니다.
제한사항
- N의 범위 : 100,000,000 이하의 자연수
입출력 예
N | answer |
123 | 6 |
987 | 24 |
입출력 예 설명
- 입출력 예 #1
문제의 예시와 같습니다. - 입출력 예 #2
9 + 8 + 7 = 24이므로 24를 return 하면 됩니다.
문제 풀이 및 주석
import java.util.*;
public class Solution {
public int solution(int n) {
int answer = 0;
int num = n;
while(num != 0){ // num(n)이 0이 아닐 때까지 반복
answer += num % 10; // num을 10으로 나누었을 때의 나머지 값
num /= 10; // num을 10으로 나눈 나머지값을 answer에 덧셈
}
return answer;
}
}
while문을 사용해 num이 0이 아닐 때까지 반복문을 돌리고 num을 10으로 나누었을 때의 나머지 값을 넣어준다. num을 10으로 나눈 나머지 값을 answer에 더해준 후 return 하였다.
JAVA로 코딩테스트 Level.2 문제 풀기 2주 차 완료!!
'코딩테스트' 카테고리의 다른 글
[6주차] 코딩테스트 풀이 (2022.05.16~2022.05.20) (0) | 2022.05.21 |
---|---|
[5주차] 코딩테스트 풀이 (2022.05.09~2022.05.13) (0) | 2022.05.15 |
[4주차] 코딩테스트 풀이 (2022.04.18~2022.04.22) (3) | 2022.04.23 |
[3주차] 코딩테스트 풀이 (2022.04.11~2022.04.15) (6) | 2022.04.16 |
[1주차] 코딩테스트 풀이 (2022.03.28~2022.04.01) (1) | 2022.04.03 |