문자열을 정수로 바꾸기

문제 설명

문자열 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;
        return answer;
    }
}



정답 코드

class Solution {
    public int solution(String s) {

        return Integer.parseInt(s);
    }
}



문제 풀이

정수를 문자열로 바꾸는 메서드를 사용하여 문제를 풀었다.

  • Integer.parseInt(num) : 정수 타입인 int를 문자열로 바꿔준다. 만약 숫자가 아니거나 부호가 아닌 값이 들어오면 에러가 난다.


문제 링크 : 문자열을 정수로 바꾸기



나머지가 1이 되는 수 찾기

문제 설명

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


제한 조건

  • 3 ≤ n ≤ 1,000,000



입출력 예

nresult
103
1211





기본 코드

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



정답 코드

class Solution {
    public int solution(int n) {
        int answer = 0;
        for(int i=1; i<n; i++)
            if(n%i == 1) {
                answer = i;
                break;
            }
        return answer;
    }
}



문제 풀이

답은 항상 존재하므로 반복문을 1부터 n까지 돌립니다. 그 이유는 답이 항상 존재하려면 어떤 수로 n을 나눴을 때 반드시 나머지가 있다는 뜻이고, n보다 작은 경우가 가장 작을 경우이기 때문입니다.
조건문을 통해 ni로 나눠 나머지가 1인 수를 만나면 정답은 해당 i값이 됩니다. 또한 작은 수부터 1씩 증가하여 찾은 수이기 때문에 가장 작은 값은 조건이 제일 먼저 부합하는 경우입니다. 따라서 조건이 맞다면 반복문을 끝냅니다.



문제 링크 : 나머지가 1이 되는 수 찾기



수박수박수박수박수박수?

문제 설명

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


제한 조건

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



입출력 예

nreturn
3"수박수"
4"수박수박"





기본 코드

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



정답 코드

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

        for(int i=0; i<n; i++){
            if(i%2 == 0) answer+="수";
            else answer+="박";
        }

        return answer;
    }
}



문제 풀이

n까지 반복문을 돌려 나머지가 0인 경우(짝수) "수"를 문자열에 추가하고, 0이 아닌 경우(홀수) "박"을 문자열에 추가합니다. 문자열을 연결해주는 연산자인 +를 사용하여 문자열을 연결하였습니다.



문제 링크 : 수박수박수박수박수박수?



내적

문제 설명

길이가 같은 두 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 이하입니다.



입출력 예

abresult
[1,2,3,4][-3,-1,0,2]3
[-1,0,1][1,0,-1]-2





기본 코드

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 = 0;

        for(int i=0; i<a.length; i++)
            answer+=a[i]*b[i];
        return answer;
    }
}



문제 풀이

a와 b의 길이가 같기 때문에 반복문을 두 배열 중 하나의 크기만큼 돌려줍니다. 내적은 a와 b를 같은 인덱스의 값끼리 곱한 값을 누적한 것이므로 answer에 a와 b의 값을 곱한 값을 누적합니다.



문제 링크 : 내적



자릿수 더하기

문제 설명

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


제한 조건

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



입출력 예

Nanswer
1236
98724





기본 코드

import java.util.*;

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

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

        return answer;
    }
}



정답 코드

import java.util.*;

public class Solution {
    public int solution(int n) {
        String str = Integer.toString(n);
        int sum = 0;
        
        for(int i=0; i<str.length(); i++)
            sum+=str.charAt(i)-'0';
        
        return sum;
    }
}



문제 풀이

n을 자릿수별로 나눠주기 위해 문자열로 변환합니다. 모든 자릿수를 더해야하기 때문에 반복문을 문자열의 길이만큼 돌려줍니다. 각 자릿수의 합을 구하기 위해 charAt()을 사용해 한자리씩 가져옵니다. 이때 문자를 정수형으로 바꿔야하기 때문에 '0'을 빼서 더합니다.

  • str.charAt(index) : 가져오려는 인덱스의 번호를 넣어 해당하는 인덱스를 문장에서 가져옵니다. 이때 return 타입은 char형입니다.



문제 링크 : 자릿수 더하기

profile
헐 제가 회사를 다니면서 개발을 하고 있어요 이게 무슨 일이죠?

0개의 댓글