wh2ssac   1년 전

3

2 3 5

로 문제가 입력했을때 큰값 작은값 곱해서 N = 10이 답이라는데

최소공배수 라고 생각해서 풀면 N=30가 나옵니다.

둘째 줄 "2,3,5 로 N의 진짜 약수를 모두 주었다"고 하는 문제의 조건을 보면

2도 10의 약수이고, 3은 10의 약수이고, 5도 10의 약수 여야 합니다 

하지만 3은 10의 약수가 아니므로 모순이므로 N=10은 답이 아닙니다

이에 관한 질문글과 답변글 읽어보면 설명은 이러합니다.

N=30 라고 하면  6(=2x3), 10(=2x5), 15(=3x5) 모두 약수로 주어져야 했다 라고 합니다. 

따라서 N=30 이 아니라고.. 

납득했습니다.

하지만 이 답변이 N=10 이어야 한다는 이유가 되나요?  

위에 설명했다시피 10은 3의 약수가 아닌데요

djm03178   1년 전

저런 입력이 주어질 수 없습니다. 말씀하신 대로 답이 10이려면 3이라는 수가 주어지지 않아야 하기 때문입니다.

vyu   1년 전

N이 10일 경우,

2

2 5

와 같이 주어질 것입니다

3이 10의 약수가 아니므로

3

2 3 5 와 같이 주어질 일이 없습니다

N이 30일 경우,
6

2 3 5 6 10 15

와 같이 주어질 것입니다

'큰값 작은값 곱해서 ~이 답'이라는 부분은, 

어떤 수 N을 수식으로 표현할 때

1 * N 으로도 가능하고

소수가 아니라는 가정 하에 N의 약수 중 1을 제외한 임의의 자연수 하나를 k이라 하면,

k * (N//k) 또한 N이 되겠지요

때문에 k * (N//k)로 값을 구하는 접근이 해결 방법 중 하나가 될 수 있습니다

lycoris1600   1년 전

3

2 3 5

이와 같은 데이터는 존재할 수 없습니다.

간단하게 증명을 해보면

2,3,5를 모두 약수로 가지는 수는 2*3*5의 배수여야 합니다.

따라서 2*3과 2*5, 3*5도 약수로 가져야 하는데 이는 2 3 5에 포함되지 않은 숫자입니다.

따라서 어떤 수 N의 진짜 약수가 모두 주어졌다는 본문의 내용과 부합하지 않습니다.

위와 같은 데이터가 성립할 수 없다면 -1을 출력해라 등의 전제조건이 문제에 있었다면 위와 같은 테스트 데이터에 대해 10을 출력하는 코드가 잘못된 코드라고 할 수 있으나, 문제의 입력 조건에 맞지 않는 데이터는 주어지지 않는다는 것이 보장되기 때문에 문제가 없는 것입니다.

3

2 3 5라는 입력에 대해

10을 출력하는 코드, -1을 출력하는 코드, 10000007을 출력하는 코드, 9999999999999를 출력하는 코드, 'Hello World!'를 출력하는 코드 모두 AC를 받습니다.

왜냐하면 그런 입력을 주어지지 않고, 이를 검증하지도 않으니까요.

wh2ssac   1년 전

아무 나열이나 받을수 있는게 아니군요 이해됐습니다

댓글을 작성하려면 로그인해야 합니다.