그래오늘은이거야

[Java]goorm test(구름TEST) 암스트롱 수(Narcissistic Number) 본문

세상 개발/Java(SpringFramework)

[Java]goorm test(구름TEST) 암스트롱 수(Narcissistic Number)

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

안녕하세요 Leo 입니다.

 

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

 

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

 

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

 

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

 

 

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

 

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

 

 

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

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

 

 

 

알고리즘 문제

 

문제 : 암스트롱 수는 각 자리 수를 3 제곱 한 결과의 합이 자신과 같은 수를 일컫습니다. [ ex) 153 = 1*1*1 + 5*5*5 + 3*3*3 ]

나열해 보면 0, 1 153, 370,  371, 407 ... 입니다.

특정 수의 범위가 입력되면 범위 내의 암스트롱 수를 출력하는 프로그램을 작성하십시오.



입력

시작 수, 마지막 수(최대 3000)

출력

범위 내의 암스트롱 수






입/출력 예시
⋇ 입출력 형식을 잘 지켜주세요.
␣ : 공백
↵ : 줄바꿈
−⇥ : 탭
보기 입력 1
100 500
출력 1
153 370 371 407 

보기 입력 2
100 300
출력 2
153 

 

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

풀이

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

 

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

/**
전제조건!! 

100-3000까지의 수
암스트롱의 수는 3자리의 수의 3제곱이 같을때 나오는 수를 말한다.
(3 * 3* 3 + 7 * 7 * 7 + 0 * 0 * 0) 370 
범위 내의 암스트롱 수를 출력하려면 최소값이 100이상 되어야 한다.

*/


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 < 100 || secInt > 3000){ 
			return;	
		}
		
		for(int i=firstInt; i < secInt; i++){
			
			String val = Integer.toString(i);
			String[] valArr = val.split("");
			
			int a =  Integer.parseInt(valArr[0]);
			int b = Integer.parseInt(valArr[1]);
			int c = Integer.parseInt(valArr[2]);
			int sum = 0;
			
			sum = ((a * a) * a) + ((b * b) * b) + ((c * c) * c);
			
			if (i == sum){
				System.out.print(sum + " ");
			}
			
		}
		

		
  }
}




 

 

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

 

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

 

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

 

 

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

 

 

 

 

 

 

 

구름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