본문 바로가기

에라토스테네스의 체3

[Swift][BFS] 백준 1963번 (소수 경로) 요구능력 : BFS && 에라토스테네스의 체 코드설명 : 이 문제의 핵심 1) 비밀번호를 한 번에 한자리 밖에 못바꾼다. 2) 1000이상 9999이하의 범위만 가능하다. 3) 소수로만 단계를 거쳐야한다. 두 소수 사이의 변환에 필요한 최소 회수를 출력한다고 했으므로, BFS를 의심해본다. 1) 비밀번호를 한 번에 한자리 밖에 못바꾼다. 이 조건이 이 문제의 핵심인데, 비밀번호를 한 번에 한자리 바꾼다고 했으므로, 입력받은 수가 있으면 천의자리를 바꿔서 큐에넣고, 백의자리를 바꿔서 큐에넣고, 십의자리를 바꿔서 큐에넣고, 일의자리를 바꿔서 큐에넣는다. 이렇게 BFS로 풀어주면 된다는 생각이 들었다. 처음 큐에 입력받은 숫자를 넣은 뒤, 그 숫자의 천의자리, 백의자리, 십의자리, 일의자리를 추출해서 배열에 .. 2022. 1. 25.
Swift) 백준 4948번 (베르트랑 공준) 요구능력 : 에라토스테네스의 체를 이해하고 있냐 코드설명 : 문제에서는 0이 입력되면 종료한다고 했으므로 while문을 통해 n이 0일경우 break를 걸었다. 그리고 1의 경우 에라토스테네스의 체로 신경쓸 수 있는 부분이 아닌것 같으므로 따로 처리해줬다. 아래는 에라토스테네스의 체를 이용해서 구해줬다. 배열을 2부터 생성해줘야 2의 배수를 다 없앨 수 있기 때문에 2부터 생성해줬고 마찬가지로 2의배수부터 배수를 쭉 없애줘야 하기 때문에 2의 배수부터 배열을 0을 만들어 줬다고 보면된다. 그리고 범위가 n < ☺️ 2021. 8. 9.
Swift) 백준 1929번 (소수구하기) 요구능력 : 에라토스테네스의 체 알고리즘을 사용할 수 있느냐 코드설명 : 에라토스테네스의 체를 사용했다. M부터 N까지 이지만, 배열은 2부터 생성해주고 배수 지워줄 때도 2부터 지워줬는데 그 이유는 한번 M부터 N으로 실행해서 출력해보면 알 수 있을 것이다. 후기 : 갓빈나님의 동영상을 보고 학습했는데 바로 이해가 되버렸다.( https://www.youtube.com/watch?v=5ypkoEgFdH8&t=498s) 문제풀어 볼 생각도 안하고 바로 에라토스테네스의 체라는 알고리즘을 찾아봤는데, 그 이유는 솔직히 천재가 아닌이상 "무슨알고리즘을 써라" 라는 식의 문제를 혼자서 풀수없다. 수학에서 근의공식을 쓰는거처럼.. 오기가 있으신분들도 억지부리지말고 학습하고 이해한다음 풀어보시길 let getMN .. 2021. 8. 8.