본문 바로가기

Algorithm/문제풀이_백준196

[Swift][Two-Pointer] 백준 1644번 (소수의 연속합) 요구능력 투포인터, 에라토스테네스의 체 문제풀이 우선, 에라토스테네스의 체를 이용해서 소수를 판별해주었다. 에라토스테네스의 체를 이용해서 소수를 판별할 때 주의할 점이 있는데, 나는 처음에 에라토스테네스의 체의 배열 개수를 n + 1로 두었다가 97%에서 런타임에러가 나서 최대인 4000001로 설정했다. 그리고 투포인터를 이용해서 end를 증가시키면서 end가 소수인경우 더해줬다. 이렇게 하면 연속적으로 소수만 부분합을 구하게된다. 가장 중요한점은 start가 소수여야된다는 것이다. 자기자신이 소수가아니라면 continue로 넘겨주었다. 후기 투포인터를 살짝 꼬아낸거같다. 코드 import Foundation let n = Int(String(readLine()!))! var arr = Array(re.. 2022. 5. 9.
[Swift][Two-Pointer] 백준 1806번 (부분합) 요구능력 투포인터 문제풀이 연속된 수들의 부분합이라는 부분에서 투포인터가 생각났다. 이 문제에서 핵심이라고 느껴지는 부분은 투포인터를 이용해서 부분적인 합을 구했을 때 그 합이 s를 넘어가게 되는 그 시점이 최소길이라는 것이다. 그 이상으로 넘어가버린다면, 최솟값이 될 수 없다. 예를 들어서 1 2 3 2 5라는 수가 있는데, s가 3이다. 그렇다면 start index가 0에있고, end index가 1에 있다면, 우선은 그 때가 최소인 부분이다. 만약 더 탐색하게되서 1 2 3까지 탐색하면 문제의 조건인 s이상은 만족을 하지만, 최소길이는 될 수 없다. 그래서 합이 s보다 작을 때까지만 while문을 돌려준 것이다. 후기 투포인터의 개념을 알고있다면 풀만한 문제인것같다. 코드 import Founda.. 2022. 5. 9.
[Swift][구현] 백준 2290번 (LCD Test) 요구능력 구현 문제풀이 1) 우선 arr배열에 s가 1일때 만들 수 있는 숫자의 형태를 모두 저장해줬다. 3차원 배열로 저장했고 " "의 경우에는 0으로 저장하고, "-"나 "|"의 경우에는 1로 저장하였다. 2) 규칙찾기 2로 나누어 떨어지는 곳은 "-"이다. 문제를 보면 알겠지만, 2로 나누어떨어지는 곳은 "-"이다. 그리고 2로 나누어 떨어지는 곳은 양쪽 끝이 " "이고, "-"문자가 s개만큼 생긴다. 그래서 문제에서 s + 2라고 한것이다. 2로 나누어 떨어지지 않는 곳은 "|"이다. 양쪽끝이 "|"이고, " "공백이 s개만큼 생긴다. 2로 나누어 떨어지는곳과 다른점은 2로 나누어 떨어지지 않는곳은 세로로 s줄만큼 더 생긴다는 것이다. 이게, 말로설명하고 그림으로 설명하는것보다 직접 코드를 쳐보면.. 2022. 4. 26.
[Swift][시뮬레이션과 구현] 백준 15685번 (드래곤 커브) 요구능력 구현 문제풀이 엄청 잘 정리해놔주신분의 velog이다. 나도 저분의 게시글을 보고 공부했다. . . 후기 방향하나하나 생각못하고 한번에 돌리다가 시간을 낭비했다.. 규칙은 못찾았지만, 구조설계는 어느정도 맞게했다. 코드 var n = Int(String(readLine()!))!//드래곤커브개수 var arr = [[Int]]() for _ in 0.. 100 || j + 1 > 100{ continue } if visited[i][j] && visited[i + 1][j] && visited[i][j + 1] && visited[i + 1][j + 1]{ result += 1 } } } } print(result) 2022. 4. 25.