그래오늘은이거야

[Java]goorm test(구름TEST) 범위 내의 숫자를 분해하여 곱한 후 합 구하기 본문

세상 개발/Java(SpringFramework)

[Java]goorm test(구름TEST) 범위 내의 숫자를 분해하여 곱한 후 합 구하기

jinhongstar 2019. 8. 30. 14:32
728x90
반응형

안녕하세요 Leo 입니다.

 

이번 소개해줄 알고리즘 사이트는 구름TEST 라는 사이트 인데요,

 

NHN에서 투자 받아 개발한 알고리즘 사이트 입니다.

 

회사면접 코딩테스트를 하는 유명한 사이트죠...

 

저는 IOS (Object-c , Swift) 위주로 개발을 하고 가끔 안드로이드 개발을 하는데요...

 

 

회사에서 Java 로 코딩테스트를 하라고 해서 ... 하라면 해야죠... 풀어봤습니다.

 

제가 20문제 이상 푼것 같은데 이걸 공유 해드리도록 하죠...

 

 

이 글이 누군가에겐 "약"이 되고 누군가에겐 "독"이 될 것이다.

개발자라면 적어도 기본 알고리즘 정도는 스스로 학습하여 풀어봐야 한다.참고로 코딩테스트 문제를 제출 한 심사위원 분도제 블로그에서 답을 확인 한다는 것을 역으로 알아두고 보세요!! ㅎㅎ

 

 

 

알고리즘 문제

 

문제 : 범위 내의 숫자를 분해하고 곱한 후 합을 출력해 내는 프로그램을 작성하는 것이 목적입니다. 시작과 끝에 해당하는 두 수를 입력하면 범위 내의 수들을 포함하여 연산이 이루어 질 것입니다. 15에서 25의 범위를 예로 들어보겠습니다.

15 => 1 * 5 = 5

16 => 1 * 6 = 6

17 => 1 * 7 = 7

18 => 1 * 8 = 8

19 => 1 * 9 = 9

20 => 2 * 0 = 0

21 => 2 * 1 = 2

22 => 2 * 2 = 4

23 => 2 * 3 = 6

24 => 2 * 4 = 8

25 => 2 * 5 = 10

이 경우에 출력되어야할 답은 5+6+7+8+9+2+4+6+8+10의 결과인 65입니다.



입력

10에서 1000 사이의 두 수를 시작, 끝 순으로 입력

출력

범위 내 모든 수를 분해하여 곱한 결과들의 합




입/출력 예시
⋇ 입출력 형식을 잘 지켜주세요.
␣ : 공백
↵ : 줄바꿈
−⇥ : 탭
보기 입력 1
10 20
출력 1
45

보기 입력 2
10 100
출력 2
2025

 

======================================================================================================

풀이

======================================================================================================

 

//Please don't change class name 'Main'
import java.util.Scanner;

//이건 설명이 잘되어 있음.

class Main {

  public static void main(String[] args) {
		
		String number;
		Scanner scan = new Scanner(System.in);
		
		number = scan.nextLine();
	
		String[] numberArr = number.split(" ");


		
		int firstInt = Integer.parseInt(numberArr[0]);
		int secInt = Integer.parseInt(numberArr[1]);
		
		//계산식 범위 착오 3000보다 크면 오류로 판단.
		if(firstInt < 10 || secInt > 1000){ 
			return;	
		}
		
		int combineVal = 0;
		
		for(int i=firstInt; i < secInt; i++){
			
			String val = Integer.toString(i);
			String[] valArr = val.split("");
			
			int combineArr = 1;
			
			for(int j=0; j < valArr.length; j++){
				combineArr = combineArr * Integer.parseInt(valArr[j]);
			}
			
			combineVal = combineVal + combineArr;
				
		}
		
		System.out.print(combineVal);

  }
}




 

 

참고로 저는 알고리즘 풀이 점수는 높은 점수는 아닙니다. 

 

일단 푸는 거에 집중했습니다.  알고리즘에 정답은 없습니다.

 

더 좋은 알고리즘을 만들어 내는게 목표 입니다.

 

 

알고리즘에 대하여 더 이야기 하실분은 댓글남겨주세요!

 

 

 

 

 

 

 

구름TEST 화면

 

 

 

 

https://codingtest.goorm.io/

 

구름TEST - 개발자 채용을 위한 코딩 테스트, 프로그래밍 시험

구름TEST는 LG전자, 라인, NHN, 스마일게이트 등에서 활용 중인 온라인 코딩 테스트 서비스입니다. 부서별, 직군별 시험 관리부터 문제 제작, 관리 기능과 응시자 초대 기능 등 개발자 채용을 위한 모든 기능을 제공합니다.

codingtest.goorm.io

 

구름테스트, 구름TEST 가 지원하는 프로그래밍 언어

 

그 외 Scala, Pascal, Lua, Objective-C, Rust, Cobol, Clojure, Smalltalk, Dart, Haskell, Perl, Common Lisp, D, Erlang 등 

 

 

 

구름테스트, 구름TEST 를 2019년 현재 적용중인 회사

 

 

 

반응형
Comments