2주차 풀이

인소리·2022년 4월 10일
1

Coding Test

목록 보기
2/13

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의 길이)

제한 조건

a, b의 길이는 1 이상 1,000 이하입니다.
a, b의 모든 수는 -1,000 이상 1,000 이하입니다.

기본 제공 코드

class Solution {
    public int solution(int[] a, int[] b) {
        int answer = 1234567890;
        return answer;
    }
}

내 풀이

import java.util.Scanner;

public class Solution6 {
    public 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 scan=new Scanner(System.in);
        Solution6 s=new Solution6();
        int len=scan.nextInt(); //배열 길이
        int[] a=new int[len];
        int[] b=new int[len];
        for(int i=0; i<len; i++) {  //a 배열의 값 입력
            a[i]=scan.nextInt();
        }
        System.out.println();
        for(int i=0; i<len; i++) {  //b 배열의 값 입력
            b[i]=scan.nextInt();
        }
        System.out.println();
        System.out.println(s.solution(a,b));
    }
}

풀이 설명

a와 b의 배열 길이는 같기 때문에 i를 a의 길이만큼 돌려주고 0으로 초기화한 answer에 a[i]값과 b[i]값을 곱한 것을 더해주었다.

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

문제 설명

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

제한 조건

3 ≤ n ≤ 1,000,000

기본 제공 코드

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

내 풀이

import java.util.Scanner;

public class Solution7 {
    public int solution(int n) {
        int answer = 1;
        for(int i=1; i<n; i++) {
            if(n%answer==1)
                break;
            else
                answer++;
        }
        return answer;
    }
    public static void main(String[] args) {
        Scanner scan=new Scanner(System.in);
        Solution7 s= new Solution7();
        int n=scan.nextInt();
        System.out.print(s.solution(n));

    }
}

풀이 설명

answer을 증가시켜주며 가장 작은 수를 구하기 위해 나머지가 1이 되는 수가 되면 바로 break로 빠져나가게 한 후 answer 값을 리턴시켜주었다.

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

문제 설명

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

제한 조건

s의 길이는 1 이상 5이하입니다.
s의 맨앞에는 부호(+, -)가 올 수 있습니다.
s는 부호와 숫자로만 이루어져있습니다.
s는 "0"으로 시작하지 않습니다.

기본 제공 코드

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

내 풀이

import java.util.Scanner;

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

    public static void main(String[] args) {
        Scanner scan=new Scanner(System.in);
        Solution8 sol = new Solution8();
        String s=scan.next();
        System.out.print(sol.solution(s));
    }
}

풀이 설명

parseInt()를 사용하여 s를 int형으로 바꾸어 리턴해주었다.
parseInt() :매개변수로 입력 받은 문자열을 int형으로 변환하여 값을 리턴해주시는 메서드

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

문제 설명

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

제한 조건

n은 길이 10,000이하인 자연수입니다.

기본 제공 코드

class Solution {
    public String solution(int n) {
        String answer = "";
        return answer;
    }
}

내 풀이

import java.util.Scanner;

public class Solution9 {
    public String[] solution(int n) {
        String[] answer = new String[n];
        for(int i=1; i<=n; i++) {
            if(i%2==1)
                answer[i-1]="수";
            else
                answer[i-1]="박";
        }
        return answer;
    }
    public static void main(String[] args) {
        Scanner scan=new Scanner(System.in);
        Solution9 s=new Solution9();
        String[] str=s.solution(scan.nextInt()); //문자열 길이
        for(int i=0; i<str.length; i++) {
            System.out.print(str[i]);
        }

    }
}

풀이 설명

i를 n만큼 돌리며 i가 짝수일 때는 "수"를, i가 홀수일 때는 "박"을 answer에 넣어주도록 하였다. answer의 인덱스는 0부터 시작하기 때문에 answer[i-1]로 써주었다.

5. 자릿수 더하기

문제 설명

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

제한 조건

N의 범위 : 100,000,000 이하의 자연수

기본 제공 코드

import java.util.*;

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

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

        return answer;
    }
}

내 풀이

import java.util.Scanner;

public class Solution10 {
    public int solution(int n) {
        int answer = 0;
        while(true) {
            answer+=n%10;
            if(n<10)
                break;
            n/=10;
        }
        return answer;
    }
    public static void main(String[] args) {
        Scanner scan=new Scanner(System.in);
        Solution10 s=new Solution10();
        int n=scan.nextInt();
        System.out.print(s.solution(n));
    }
}

풀이 설명

n을 10으로 나눈 나머지를 answer에 더해주고 만약 n이 10보다 작지 않다면 10으로 나눠준다. 이것을 n이 10보다 작지 않을 때까지 반복을 해주고 10보다 작으면 break을 걸어 answer을 반환시켜준다.

profile
코딩이라는 감옥에 갇혀 사는 삶

8개의 댓글

comment-user-thumbnail
2022년 4월 10일

5일 문제 풀이가 되게 신박하네요!

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

4일차 문제 풀이, 배열로 넘길 수도 있군요!!

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

코드를 보면서 공부를 할 수 있어요!!

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

여러가지 시도를 해본 노력이 보입니다! 다음주도 힘내세요

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

역시 전체 코드를 짜 보는 건 좋은 습관인 것 같아요!

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

수박 문제 새로워요..!

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

3일차 문제 함수를 잘 활용해서 푼 것 같아요!

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

나머지가 1이 되는 수 찾기 보통은 i값을 리턴할 생각을 하는데 answer를 증가 시켜주는 건 생각도 못한 풀이네요!

답글 달기

관련 채용 정보