코딩 스터디

Java 스터디 3주차

jisu0924 2025. 5. 7. 23:46

프로그래머스(https://programmers.co.kr/)의 문제를 순차적으로 풀이함.


1. 나머지 구하기

더보기

class Solution {
    public int solution(int num1, int num2) {
        int answer = -1;
        return answer;
    }
}

Java의 산술 연산자 종류는 다음과 같다.

 

종류 코드 예 설명
+ x=a+b a와 b를 더한 값을 x에 대입
- x=a-b a와 b를 뺀 값을 x에 대입
* x=a*b a와 b를 곱한 값을 x에 대입
/ x=a/b a를 b로 나눈 값을 x에 대입
% x=a%b a를 b로 나눈 나머지를 x에 대입

 

    표를 통해 알 수 있듯 나머지를 구하는 산술 연산자는 %이기에 answer의 값에 num1%num2를 넣어준다.
class Solution {
    public int solution(int num1, int num2) {
        int answer = num1/num2;
        return answer;
    }
}


2. 나이 출력

더보기

문제 설명
머쓱이는 선생님이 몇 년도에 태어났는지 궁금해졌습니다. 2022년 기준 선생님의 나이 age가 주어질 때, 선생님의 출생 연도를 return 하는 solution 함수를 완성해주세요

 

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

나이가 n살이라면, 문제 년도인 2022에서 나이를 뺀다. 태어났을 때의 나이가 1살이기 때문에 +1을 해 준다. 

class Solution {
    public int solution(int age) {
        int answer = 2022-age+1;
        return answer;
    }
}

 


3. 숫자 비교하기

 

더보기

문제 설명
정수 num1과 num2가 매개변수로 주어집니다. 두 수가 같으면 1 다르면 -1을 retrun하도록 solution 함수를 완성해주세요.

 

#include <string>
#include <vector>

using namespace std;

int solution(int num1, int num2) {
    if(num1==num2)
        return 1;
    else
        return -1;
}

Java 연산자는 다음과 같다.

  • 단항 연산자: 부호, 증감 연산자
  • 이항 연산자: 산술, 비교, 논리 연산자
  • 삼항 연산자: 조건 연산자
종류 연산자 예 설명 코드 예
증감 ++, --    
산술 +, -, *, /, %    
시프트 >>, <<, >>>    
부호 +, -    
비교 >, <, >=, <=, ==, !=, instance of    
비트 &, |, ~, ^    
논리 &&, ||, !, ^    
조건 (expr)? x:y    
대입 =,+=,--    

 

따라서 비교 연산자인 ==를 사용하여 num1과 num2를 비교해 준다.

class Solution {
    public int solution(int num1, int num2) {
        
        if(num1==num2){
            return 1;
        }
        else{
            return -1;
        }
    }
}

 


4. 각도기

더보기

문제 설명
각에서 0도 초과 90도 미만은 예각, 90도는 직각, 90도 초과 180도 미만은 둔각 180도는 평각으로 분류합니다. 각 angle이 매개변수로 주어질 때 예각일 때 1, 직각일 때 2, 둔각일 때 3, 평각일 때 4를 return하도록 solution 함수를 완성해주세요.

 

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

앞서 얘기한 비교 연산자를 사용하되, if/else 문이 아닌 if문을 여러개 사용할 수 있는 else if문을 사용하여 다중 if문을 작성한다.

class Solution {
    public int solution(int angle) {
       if(angle<90)
           return 1;
        else if(angle==180)
            return 4;
        else if(angle==90)
            return 2;
        else return 3;
    }
}

다만, 평각과 직각은 답이 하나로 정해져 있으니 else if문에 넣고 답이 여러개가 될 수 있는 둔각을 else에 배치한다.


5. 배열의 유사도

더보기

문제 설명
두 배열이 얼마나 유사한지 확인해보려고 합니다. 문자열 배열 s1과 s2가 주어질 때 같은 원소의 개수를 return하도록 solution 함수를 완성해주세요.

 

class Solution {
    public int solution(String[] s1, String[] s2) {
        int answer = 0;
        return answer;
    }
}

이는 s1의 첫 번째 인덱스와 s2의 모든 인덱스를 비교 후, s1의 두 번째 인덱스와 s2의 모든 인덱스를 비교, 즉 s1부터 순차적으로 비교를 하여 같은 값을 같는 인덱스를 찾는 문제이다. 이를 만족하기 위해서는 for문 안에 for문이 존재해야 한다.

 

우선 s1을 먼저 비교하기 위해 i라는 변수를 만들어 s1의 길이만큼 반복해 주는 코드를 작성한다.

for(int i=0;i<s1.length;i++){

}

 

이후 다시 for문을 만들어 이번에는 s2의 길이만큼 반복하도록 해 준다.

for(int i=0;i<s1.length;i++){
	for(int j=0;j<s2.length;j++){
    
    }
}

이렇게 되면, 우선 j를 반복한 후 반복이 끝나면 i가 반복되어 s1과 s2 전부를 돌 수 있게 된다.

 

이제 s1과 s2의 문자열을 비교하기 위해서는 equals()라는 함수를 사용해 주어야 한다.

 

아래와 같이 비교를 할 시 s1[i]와 s2[j]의 문자열을 비교해 주어 같을 시 +1을 하여 result 값 안에 넣어 준다.

if(s1[i].equals(s2[j]))

 

완성 코드는 다음과 같다.

class Solution {
    public int solution(String[] s1, String[] s2) {
        int result=0;
       for(int i=0;i<s1.length;i++){
           for(int j=0;j<s2.length;j++){
               if(s1[i].equals(s2[j]))
                   result+=1;
           }
       }
        return result;
    }
}

'코딩 스터디' 카테고리의 다른 글

[250204] C 스터디 3주차  (0) 2025.02.04
[250128] C 스터디 2주차  (0) 2025.01.29
[241125] C++ 스터디 5주차  (0) 2024.11.25
[241119] C++ 스터디 4주차  (0) 2024.11.20
[241112] C++ 스터디 3주차  (1) 2024.11.12