코딩테스트

[2주차] 코딩테스트 풀이 (2022.04.04~2022.04.08)

Jinyiji 2022. 4. 10. 00:01

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주 차 완료!!