2주차 문제풀이

주완·2022년 4월 10일
0

CodingTest

목록 보기
2/4
2022.04.04

1. 내적

문제

길이가 같은 두 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의 길이)

🔎 기본제공
class Solution {
    public int solution(int[] a, int[] b) {
        int answer = 1234567890;
        return answer;
    }
}

풀이

📃 제출코드

class Solution {
    public int solution(int[] a, int[] b) {
        int answer = 1234567890;
        int sum = 0;
        for(int i=0; i<a.length; i++)
            sum += a[i]*b[i];
        answer = sum;
        return answer;
    }
}

💡 전체코드

import java.util.Scanner;

public class Solution {
    static int solution(int[] a, int[] b) {
        int answer = 0;
        for(int i=0; i<a.length; i++)
            answer += a[i]*b[i];
        return answer;
    }

    public static void main(String[] args) {
        Scanner sc= new Scanner(System.in);
        System.out.print("입력할 수의 개수 입력 : ");
        int length = sc.nextInt();
        int[] arr1 = new int[length];
        int[] arr2 = new int[length];
        System.out.print("입력 1 : ");
        for(int i=0; i<arr1.length; i++)
            arr1[i] = sc.nextInt();
        System.out.print("입력 2 : ");
        for(int i=0; i<arr1.length; i++)
            arr2[i] = sc.nextInt();
        System.out.println("내적 : "+solution(arr1, arr2));
    }
}

📌 풀이설명

내적을 하기 위해서는 각각의 입력받은 값을 저장할 방이 필요하므로 배열을 만들어준 후 입력받은 값을 저장하였다. 배열을 넘길 때는 배열이름을 입력하고, 넘긴 배열을 받을 때는 자료형[] 배열이름의 형태로 넘겨 받는다. for문을 통해 각각의 값을 곱하고 answer에 더해 내적을 구하였다.

2022.04.05

2. 나머지가 1이 되는 수 찾기

문제

자연수 n이 매개변수로 주어집니다. n을 x로 나눈 나머지가 1이 되도록 하는 가장 작은 자연수 x를 return 하도록 solution 함수를 완성해주세요. 답이 항상 존재함은 증명될 수 있습니다.

🔎 기본제공
class Solution {
    public int solution(int n) {
        int answer = 0;
        return answer;
    }
}

풀이

📃 제출코드

class Solution {
    public int solution(int n) {
        int answer = 0;
        int i=2;
        while(true){
            if((n-1)%i==0){
                answer = i;
                break;
            }
            i++;
        }
        return answer;
    }
}

💡 전체코드

import java.util.Scanner;

public class Solution {
    static int solution(int n) {
        int answer = 0;
        int i=2;
        while(true){
            if((n-1)%i==0){
                answer = i;
                break;
            }
            i++;
        }
        return answer;
    }

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.print("수 입력 : ");
        int num = sc.nextInt();
        System.out.println("결과 : "+solution(num));
    }
}

📌 풀이설명

나머지가 1이 되는 수를 찾으려면 n/x=몫+1이므로 n-1/x=몫이다. while문을 통해 작은 수부터 n-1이 나누어 떨어지는 수를 구하면 된다. 이때, n이 3부터 시작되고, 1은 어떤 수를 나누더라도 나누어 떨어지기 때문에 2부터 나누기 시작한다. if문을 사용해 n-1을 i로 나누었을 때 나머지가 0인 수를 찾아 그 수를 answer에 넣은 후 break를 해 while문을 빠져나가도록 했다.

2022.04.06

3. 문자열을 정수로 바꾸기

문제

문자열 s를 숫자로 변환한 결과를 반환하는 함수, solution을 완성하세요.

🔎 기본제공
class Solution {
    public int solution(String s) {
        int answer = 0;
        return answer;
    }
}

풀이

📃 제출코드

class Solution {
    public int solution(String s) {
        int answer = 0;
        answer = Integer.parseInt(s);
        return answer;
    }
}

💡 전체코드

import java.util.Scanner;

public class Solution {
    public static int solution(String s) {
        int answer = 0;
        answer = Integer.parseInt(s);
        return answer;
    }

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.print("문자열 입력 : ");
        String str = sc.next();
        System.out.println("결과 : "+solution(str));

    }
}

📌 풀이설명

Intenger.parseInt()를 활용해 문자열을 int값으로 바꿀 수 있도록 하였다.

Intenger.parseInt()
String str1 = "1234";
String str2 = "-1234";

int num1 = Intenger.parseInt(str1);
int num2 = Intenger.parseInt(str2);
결과 : 1234 -1234
Intenger.valueOf()
String str1 = "1234";
String str2 = "-1234";

int num1 = Intenger.parseInt(str1);
int num2 = Intenger.parseInt(str2);
결과 : 1234 -1234
두 값의 결과는 동일하지만 parseInt()는 int값을 return하고, valueOf()는 intenger object를 return한다. int는 자료형 중 하나로 산술 연산이 가능하고 null로 초기화가 불가능하지만, intenger object는 객체로 unboxing 없이는 산술연산이 안되며, null 값을 처리할 수 있다.
2022.04.07

4. 수박수박수박수박수박수?

문제

길이가 n이고, "수박수박수박수...."와 같은 패턴을 유지하는 문자열을 리턴하는 함수, solution을 완성하세요. 예를들어 n이 4이면 "수박수박"을 리턴하고 3이라면 "수박수"를 리턴하면 됩니다.

🔎 기본제공
class Solution {
    public String solution(int n) {
        String answer = "";
        return answer;
    }
}

풀이

📃 제출코드

class Solution {
    public String solution(int n) {
        String answer = "";
        String[] str = new String[n];
        for(int i=0; i< str.length; i++){
            if((i+1)%2==0) str[i] = "박";
            else str[i] = "수";
        }
        answer = String.join("",str);
        return answer;
    }
}

💡 전체코드

import java.util.Scanner;

public class Solution {
    static String solution(int n) {
        String answer = "";
        String[] str = new String[n];
        for(int i=0; i< str.length; i++){
            if((i+1)%2==0) str[i] = "박";
            else str[i] = "수";
        }
        answer = String.join("",str);
        return answer;
    }

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.print("수 입력 : ");
        int n = sc.nextInt();;
        System.out.println(solution(n));
    }
}

📌 풀이설명

Scanner를 사용해 수박의 입력 수를 구하고, 그 수를 넘겨주었다. 입력한 개수에 맞게 수박을 출력하기 위해 String 배열을 사용해 하나씩 넣을 수 있게 하였다. 이떼 for문을 사용해 입력받은 수만큼 반복되게 하였고, if문을 사용해 짝수일 때는 배열에 "박"을 넣어주고, 홀수일 때는 "수"를 넣어주었다. 배열을 String.join으로 합쳐 문자열을 return하도록 했다.

2022.04.08

5. 자릿수 더하기

문제

자연수 N이 주어지면, N의 각 자릿수의 합을 구해서 return 하는 solution 함수를 만들어 주세요.
예를들어 N = 123이면 1 + 2 + 3 = 6을 return 하면 됩니다.

🔎 기본제공
import java.util.*;

public class Solution {
    public int solution(int n) {
        int answer = 0;

        // [실행] 버튼을 누르면 출력 값을 볼 수 있습니다.
        System.out.println("Hello Java");

        return answer;
    }
}

풀이

📃 제출코드

public class Solution {
    public int solution(int n) {
        int answer = 0;
        while(n>=10){
            answer += n%10;
            n/=10;
        }
        answer+=n;
        return answer;
    }
}

💡 전체코드

import java.util.Scanner;

public class Solution_0408 {
    static int solution(int n) {
        int answer = 0;
        while(n>=10){
            answer += n%10;
            n/=10;
        }
        answer+=n;
        return answer;
    }

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.print("수 입력 : ");
        int num = sc.nextInt();
        System.out.println(solution(num));
    }
}

📌 풀이설명

Scanner를 이용해 각자리 숫자의 합을 구할 수를 입력받아 넘겨주었다. while문을 이용해 입력받은 수가 10보다 작아질 때까지 반복하였다. 이때 각자리 숫자의 합을 구하기 위하여 입력 받은 수를 10으로 나눈 나머지를 answer에 더해 주었고, 입력받은 수를 10으로 나누는 작업을 반복하였다. 입력받은 수가 10보다 작아지면 반복문을 빠져나와 마지막으로 입력받은 수를 한번 더 더해주고 return해주었다.

profile
배움을 기록하자

9개의 댓글

comment-user-thumbnail
2022년 4월 10일

새로운 함수들을 많이 알아갑니다!!

답글 달기
comment-user-thumbnail
2022년 4월 10일

우왕 join함수를 썼네요 짱!

답글 달기
comment-user-thumbnail
2022년 4월 10일

함수가 많아 이해하기 쉬워요!

답글 달기
comment-user-thumbnail
2022년 4월 10일

깨알 이모티콘들이 너무 귀엽네요. 수박알고리즘도 잘봤습니다

답글 달기
comment-user-thumbnail
2022년 4월 10일

몰랐던 함수들을 알아갑니다!!

답글 달기
comment-user-thumbnail
2022년 4월 10일

for문보다 while문을 사용해야 할 때를 적절히 판단하여 잘 쓰신 것 같아요!👍🏻

답글 달기
comment-user-thumbnail
2022년 4월 10일

코드마다 정리를 꼼꼼히 하신 것 같아 보기 편하네요!

답글 달기
comment-user-thumbnail
2022년 4월 10일

자세하게 풀이를 적어주셔서 이해하기 쉬운 것 같아요!

답글 달기
comment-user-thumbnail
2022년 4월 10일

저번부터 느낀건데 문제로 빠릿하게 잘 풀고 pr도 일찍일찍 올리는게 저보다 낫네요,, 특히 3번 문제를 Integer랑 valueOf 둘다 써서 차이점을 알아낸게 대단합니다!!

답글 달기