[JAVA][WEIRD]질문드려요 leun_kcha 안녕하세요 늦었지만 새해 복 많이 받으세요~~ 열심히 해서 일단 답은 맞는거같은데요 오답이라고 떠서요 ㅠ.ㅠ 혹시 어떤게 잘못된건지 말씀해주실수 있으신가요?ㅠ.ㅠ 부탁드려요 _(__)_ import java.util.*; public class Main { public static void main(String[] args){ Scanner sc = new Scanner(System.in); int numOfValue = sc.nextInt();//총라인수 //입력받는 값은 200보다 같거나 작아야 한다. int[] sum = new int[numOfValue]; //약수의 합계 int[] divCount = new int[numOfValue]; //약수의 갯수 String[] outValue = new String[numOfValue];//결과 출력값 for (int i = 0; i < numOfValue; i++) { int inNumber = sc.nextInt(); sum[i] = 0; divCount[i] = 0; for (int j = 1; j <= inNumber / 2; j++) { if (inNumber % j == 0) { sum[i] += j; divCount[i] += 1; } } //약수의 값 개별로 넣기 int[] divNum = new int[divCount[i]+1]; int tempCount = 0; //약수의 입력을 위한 temp++ for (int j = 1; j <= inNumber/2; j++) { if (inNumber % j == 0) { divNum[tempCount] = j; tempCount += 1; } } //약수의 값이 위어인지 아닌지 비교 outValue[i] = "weird";//기본값을 weird로 설정 if (sum[i]<= inNumber) {//약수의 합이 입력값보다 작을경우 not weird outValue[i] = "not weird"; } //약수의 합이 입력값 보다 클경우 점차적으로 한개씩 빼며 비교를 해간다 else if ( sum[i] > inNumber ) { for (int j = 0; j < divCount[i]; j++) { //출력값이 not weird 거나 약수의 합이 입력값보다 작아질 경우 for문을 나간다 if (outValue[i] == "not weird" || sum[i] <= inNumber) { break; } else{ //입력값이 (약수의 합 - [작은값부터]약수)로 돌면서 과 같은지 비교한다. for (int j2 = j; j2 < divCount[i]; j2++) { if (inNumber==(sum[i]-divNum[j2])) { outValue[i] = "not weird"; break; } } } sum[i] -= divNum[j];//약수의 합이 작은수 부터 한개씩 사라진다. } } } for (int i = 0; i < outValue.length; i++) {//출력구문 System.out.println(outValue[i]); } } } 9년 전
2개의 댓글이 있습니다. 일루 가능한 subset의 종류가 프로그램에서 체크하는 것보다 더 많을 것 같습니다. 9년 전 link leun_kcha 아....감사합니다 일루님 ㅠ.ㅠ 9년 전 link 정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.
leun_kcha
안녕하세요
늦었지만 새해 복 많이 받으세요~~
열심히 해서 일단 답은 맞는거같은데요
오답이라고 떠서요 ㅠ.ㅠ
혹시 어떤게 잘못된건지 말씀해주실수 있으신가요?ㅠ.ㅠ
부탁드려요 _(__)_
9년 전