[DEV] study&learn
article thumbnail

 

백준 알고리즘 입문!!!
"곱셈" 문제에 대하여


간단하면서도 어렵구나...

익숙하지 않다는 이야기!!!

친해지자 자바야!


일단!

자바 코드의 기초를 좀 짚고 넘어가자.

 

자바의 모든 프로그램은

public static void main(String[] args)
// java API에서 위를 유일한 엔트리 포인트로 정의했다.

//엔트리 포인트가 뭐니??
//→ 프로그램이 시작되는 시작점을 의미한다.

함수로 시작한다.

 

왜일까??

 

  • 접근제어자는 public

main 함수는 모든 실행프로그램의 기본이 되는 함수여야 한다.

기본이 되는 함수기 때문에 main 함수에 접근하지 못하는 경우가 없이 어디에서나 접근이 가능해야 한다!!

(엔트리 포인트인 메인 메서드에 어느 곳에서든 자유롭게 접근이 가능해야한다.)

private는 해당 클래스에서만 접근이 가능하고,

protected 같은 패키지 내에서만 접근이 가능하다.

 

  • 메모리 할당은 static

메모리 할당은 2가지 방법이 있다.

첫째, static 영역에 선언하는 것.

둘째, heap 영역에 선언(new연산자)하는 것.

 

main 메소드가 heap 영역에 선언된다면, Garbage Collertor에 의해 메모리에서 정리될 것이다.

이 경우 기본이 되는 함수가 정리된 것이기 때문에 프로그램이 죽게 된다.

 

따라서 static 영역에 선언하여 메모리에 항상 상주하도록 해야 한다!

static 메서드는 객체를 생성하지 않고도 호출 할 수 있다는 특징이 있다.

 

  • 리턴 값은 void

void는 "함수가 끝날 때 리턴 값이 없다."를 의미한다.

 

main 함수의 경우 main 함수가 종료되면 프로그램이 종료되기 때문에 

return 값이 의미를 지닐 수가 없다.

따라서 void를 의무적으로 사용하여야 한다.

 

  • 함수명은 main 규칙

 

  • String[] args

String 객체로 정의된 args 라는 이름의 배열로 파라미터르 받겠다는 의미이다.

args는 파라미터의 이름이기 때문에 다른 이름의 사용이 가능하다.

 

String[] args 안쓰면 안돼?

결론은 안됩니다. 꼭 String 배열을 파라미터로 받아야한다.

만약 안쓴다면, 컴파일은 가능하지만, 엔트리 포인트가 없어 실행할 수 없는 상태가 된다.


"곱셈" 문제

 

2588번: 곱셈

첫째 줄부터 넷째 줄까지 차례대로 (3), (4), (5), (6)에 들어갈 값을 출력한다.

www.acmicpc.net

문제 정의

일단 (1)과 (2)의 값을 Scanner의 System.in 기능을 통해 int 값으로 입력받는다.

Scanner sc = new Scanner(System.in);
int A = sc.nextInt();

(3), (4), (5)의 값을 구하려면,

(1)을 (2)의 각 자리수와 곱해주어야 한다.

 

(2) 각 자리 수를 어떻게 구할까?

  1. String으로 변환 후. 문자열을 이용하거나, (https://www.acmicpc.net/source/51515856)
  2. 나누기 & 나머지를 이용하여 계산 (https://www.acmicpc.net/source/51517171)

 

profile

[DEV] study&learn

@devjuni

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!