나머지 구하기

GOYENA·2025년 3월 27일

algorithm

목록 보기
1/12

나머지 구하기 문제

정수 num1, num2가 매개변수로 주어질 때, num1를 num2로 나눈 나머지를 return 하도록 solution 함수를 완성해주세요.


👿 에러 발생

단순히 몫 구하기 연산자를 사용했을 땐 쉬웠다.
제한사항인 0<num1<=100, 0<num2<=100을 적용하면서 에러가 발생했다.

에러난 코드

class Solution {
    public int solution(int num1, int num2) {
        int answer = num1%num2;
        if(0<num1 && num1<=100 && 0<num2 && num2<=100) {
            return answer;
        }
    }
}

😇에러 해결!

에러난 이유 :
Java의 데이터 타입에 대한 규칙때문.
solution의 데이터형태는 int
데이터 형태를 int로 지정하면 반드시 숫자를 return해야함.
if문의 true조건에 해당하지 않는 매개변수일 때,
예를들어 num1=500일 때, return 할 수가 없음.
해결 방법 :
else문을 작성해서 if문의 결과가 false일 때도 return할 수 있게 했다.

해결된 코드

class Solution {
    public int solution(int num1, int num2) {
        int answer = num1%num2;   
        if(0<num1 && num1<=100 && 0<num2 && num2<=100) {
            return answer;
        } else {
            return -1;
        }
    }    
}

https://school.programmers.co.kr/learn/courses/30/lessons/120810?language=java


💡문제 해결하면서 배운 것!

메인 메서드라는 것과 데이터 타입을 배웠다.

main()메서드란?
Java로 구현된 프로그램이 시작될 때 가장 먼저 실행되는 메서드.
Java의 규칙, Java소스는 무조건 main 함수에서부터 시작된다.

Java 에서 메서드는 리턴값이 어떤 형태(타입)인지 반드시 표시해야만 한다.
표시하지 않으면 에러가 발생한다. 내가 이 에러를 만난 것이다.
리턴값이 어떤 형태인지는 데이터 타입으로 표시할 수 있다.
리턴값이 없을 때 데이터 타입으로 void를 사용한다.

데이터 타입의 종류는?
기본 자료형 : byte, short, int, long, char, float, double, boolean
참조 자료형 : string, Array, List, HashMap, HashSet, LinkedList, Queue, Stack
아직은 무엇을 의미하는지 전부 다 알지는 못하지만, 앞으로 배워나갈 것!

1.기본 자료형
기본값 존재, 따라서 NULL개념이 없다.
기본형 타입에 NULL을 넣고 싶다면, 래퍼 클래스 활용하기.
실제 값을 저장하는 공간, Stack메모리에 저장된다.

타입메모리 크기기본값데이터의 표현 범위
논리형boolean1 bytefalse
정수형byte1 byte0
short2 byte0
int (default)4 byte0
long8 byte0L
실수형float4 byte0.0f
double (default)8 byte0.0d
문자형char2 byte‘\u0000’

2.참조 자료형
기본형 타입을 제외한 모든 타입. NULL개념이 존재.
실제 값을 가지지 않음. 데이터가 저장된 메모리의 주소값을 가지는 자료형.
힙(Heap) 메모리에 저장된다.
해당 값은 객체를 참조하는 변수 타입을 의미. 다양한 자료형이 있음.
검색해서 사용하기!

3.래퍼 클래스
기본 자료형을 객체(Object)로 다루고 싶을 때 사용.
비 객체를 객체화 시키는 클래스.
기본타입의 객체화를 의미.
기본 자료형을 클래스로 감싸는 것.

profile
헤헷

0개의 댓글