본문 바로가기

alogrithm7

[Swift][DFS] 백준 10971번 (외판원 순회 2) 요구능력 : DFS에 대한 이해 코드설명 : 문제의 입력에는 4 0 10 15 20 5 0 9 10 6 13 0 12 8 8 9 0 가 적혀있다. 나처럼 이해못하는 사람을 위해서 해석해보자면, 도시가 4개 있는데, 1번도시는 1번에서 1번가는데 비용이 0 1번에서 2번가는데 비용이 10 1번에서 3번가는데 비용이 15 1번에서 4번가는데 비용이 20 이런식이다. 문제를 이해하고, 이 부분을 본다면 DFS와 인덱스를 이용해서 접근해야겠다고 생각이 든다. 1. 우선 입력을 쭉 받아놓는다. let n = Int(String(readLine()!))! var w: [[Int]] = Array(repeating: [], count: n) for i in 0.. 2 -> 2 -> 3 -> 1 이런식으로 자기자신을 .. 2021. 10. 4.
[Swift][BFS] 백준 13913번 (숨바꼭질 4) 요구능력 : BFS에 대한 이해 코드설명 : "이게틀려?" 를 많이 시전한 문제이다. 이 문제를 풀기전에 숨바꼭질부터 풀고오자. 숨바꼭질에서 달라진점은 지나온경로를 찾는것이다. 지나온경로는 코드에서 visited배열에 저장해줬다. 방문처리와 동시에 경로를 저장했다. 이렇게 안해주고 배열을 따로 추가하면 메모리초과가난다. 경로추가하는 부분은 아래 주석처리를 해두었다. 1. 메모리초과 => 크기가 100001인 배열 3개를 만들어서 메모리초과가 났다. => 아, 참고로 경로를 찾기위한 배열(아래코드에선 visited)에 초기값을 0으로 세팅하면 당연히 메모리 초과가 난다. => 이유는 2 * x에 0이들어가면 0인걸 참고하면 된다. 2. 컴파일에러 처음에 n을 방문처리해줬는데, 방문처리를 하면 코드가 꼬이게.. 2021. 10. 2.
[Swift][DFS] 백준 1759번 (암호만들기) 요구능력 : DFS와 백트래킹에 대한 이해 코드설명 : N과M(8) 문제로 선행학습을 하고 풀면 정말 효율적일거같다. 안푸셨다면 풀고오시길... N과M(8)에서 바뀐부분 1. 숫자가 아닌 알파벳이라는 점 2. for문을 이용하여 자음이 2개이상, 모음이 1개이상인지 판별 후기 : 우연찮게 이 문제를 접하게됬는데 N과M(8)과 거의 유사한문제다.. 자음 2개이상과 모음1개이상이 들어갔는지만 판별하면 되는 문제였다.. 골드문제를 처음으로 15분도안걸려서 풀었다. 시간초과가 날거같았는데, 2초인거보고 안심... let LC = readLine()!.split(separator: " ").map{Int(String($0))!} let L = LC[0] let C = LC[1] let arr = readLine(.. 2021. 10. 1.
[Swift][DFS][백트래킹] 백준 15655번 (N과 M (6)) 요구능력 : DFS와 백트래킹에 대한 이해 코드설명 : N과M(5) 에서 바뀐점은 조건이 하나 추가됐는데, depth가 충족했을 때 오름차순인지 검사하고 결과문자열에 추가해준다. 후기 : 저번 N과M중에서도 오름차순인것만 출력하는 문제를 풀었는데 그 때는 비효율적으로 for문으로 하나씩 다돌려본거같다. 이번에는 그 때보다는 효율적인 방법으로 푼것같다. let nm = readLine()!.split(separator: " ").map{Int(String($0))!} let n = nm[0] let m = nm[1] var arr = readLine()!.split(separator: " ").map{Int(String($0))!} var depth: Int = 0 var resultStr: String .. 2021. 9. 30.