알고리즘/Solved_Silver

[Python Silver V 1978]

Hexs 2023. 3. 7. 17:29
반응형

https://www.acmicpc.net/problem/1978

 

1978번: 소수 찾기

첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다.

www.acmicpc.net

첫 번째 입력과 두 번째 입력이 주어집니다.

첫 번째 입력은 소수를 검사할 수의 개수를 받는 것이고.

두 번째 입력은 소수 검사할 숫자를 받는 것 입니다.

여기서 핵심은 소수를 어떻게 판별해 내는지인데.

제가 생각하고 있는 방법은 2가지입니다.

첫 번째는 만약 숫자가 20이 들어왔다고 가정을 하면. 20의 절반만 검사를해도 이수가 소수인지 아닌지 알 수 있습니다.    예를 들면. 20의 약수는 1, 2, 4, 5, 10, 20입니다. 20의 절반인 1부터 10까지만 검사를 해봐도 소수인지 아닌지 판별할 수 있습니다.

두 번쨰 밑의 방법처럼 숫자가 들어오면 1부터 해당 숫자까지 1씩 증가시켜가면서 나머지가 있는지 없는지 검사하는 방법입니다. 나누어떨어지는 수가 2개 이상이면 이수는 소수가 아니라고 판단할 수 있습니다.

[ 1 ] Count 에 int 형으로 형변한된 입력값을 받습니다

[ 2 ] num1 에 list 형식으로 저장되고 내부 인수는 int 형이며, 입력받는 방식은 띄어쓰기가 기준입니다.

[ 3 ] re_count 값을 0으로 초기화해둡니다.

[ 4 ] num1 에 list 형식으로 입력받은 숫자를 하나하나 i 변수로 넘겨줍니다

[ 5 ~ 6 ] 만약 i가 1 이라면 Count 를 -1 합니다. / 1은 소수가 아니기때문. 

- Count 는 처음에 입력될 개수를 받은 변수이지만 여기서 소수가 아니라면 -1씩 해서 최종적인 소수의 값을 표시해주는 데 사용하였습니다. / 밑에 사용한 이유 있음 /

[ 7 ~ 14 ] i가 7 이상일 때 2부터 i+1의 값을 하나씩 j에 담아서 i%j 값에 나머지가 0이 되는지 검사합니다. 만약에 나머지가 0이라면 re_count 값을 1 증가시켜주고 re_count 값이 최종적으로 1 초과 하게 되면 count 를 -1하며 for을 break 합니다.

[ 15 ] re_count 변수를 또 사용하기 때문에 초기화 해줍니다.

 

성공

/

 

https://programmers.co.kr/

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

programmers 같은 경우는 예외 처리를 전부 하게 되는데.

Solved 같은 경우는 예외 처리가 없이. 정답만 나오게 하면 됩니다. 그래서 아마 저 코드 그대로 같은 문제가 있는 programmers에서 실행하면 실행이 안 될 것 같습니다.

숫자가 아닌 문자를 받는다던가, 처음 받은 숫자보다 적거나 클 경우 등과 같은 예외 처리를 추가적으로 해주면 좋을 것 같습니다.

예외 처리가 없기 때문에 그냥 Count로 입력받은 숫자를 사용했습니다.

반응형