[Java]goorm test(구름TEST) 암스트롱 수(Narcissistic Number)
안녕하세요 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 화면
구름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년 현재 적용중인 회사