본문 바로가기

시뮬레이션5

[Swift][구현] 백준 15662 (톱니바퀴(2)) 요구능력 구현, 큐 문제풀이 변경되기 이전의 톱니바퀴끼리 비교를 해야하기 때문에 변경되기 이전의 톱니바퀴들을 미리 저장해둔다.(beforeLoc) 처음에 재귀로 접근했다가 이상하게 빠져버려서 시간을 많이 낭비했다가 포기하고 큐로 풀게되었다. 큐로 접근해서 방문처리를 해주면 똑같은 톱니바퀴를 돌지않고, 딱 돌아야하는 톱니바퀴만 돌 수 있다. 방문처리를 해주는 이유는 예를 들어 1번부터 출발해서 4번까지 가는데 중간에 2번에서 1번과 극이 다르다면 조건을 충족하기 때문에 1번을 또 돌릴 수도 있는 경우를 방지하기 위해서이다. 재귀로도 풀리긴 하지만, 큐로 푸는것이 효율적인 것 같다. 후기 변경되기 이전의 값을 쓰는 문제에서는 변경되기 이전의 값을 먼저 저장해놓자! 코드 import Foundation let.. 2022. 5. 18.
[Swift][구현] 백준 17406번 (배열 돌리기 4) 요구능력 구현 문제풀이 핵심은 순열을 이용해서 연산순서를 정해줘야한다는것이다. 배열돌리는 부분은 급하게 순열로 변경하다보니 코드가 더러워졌다.. 배열돌리는건 배열돌리기2와 동일하게 돌렸다. 시간나면 풀이올려야지.. 혹시 궁금한점있으시면 댓글달아주시면 답변드리겠습니다. 후기 어려운문제는 아니었는데 문제에서 헷갈리게 임의로 정해도된다(?)라고 적혀있어서 시간이 걸렸다.. 코드 let nmk = readLine()!.split(separator: " ").map{Int(String($0))!} let n = nmk[0] let m = nmk[1] let k = nmk[2] var arr = [[Int]]() for _ in 0.. 2022. 5. 17.
[Swift][구현] 백준 16967번 (배열 복원하기) 요구능력 구현 문제풀이 문제의 조건에 힌트를 모두 주었다. 두 배열중 하나에 포함된다는건 B는 필수적으로 A배열을 포함하고 있기 때문에 B만갖고있는것을 말한다. 가장 중요한건 빼기할때 절댓값이다.. for i in 0..= 0{ // aArr[i][j] = abs(aArr[i - x][j - y] - bArr[i][j]) } }else{//b에만 포함되면 aArr[i - x][j - y] = bArr[i][j] } } } 후기 절댓값때메 몇번을 다시했는지.. 코드 let hwxy = readLine()!.split(separator: " ").map{Int(String($0))!} let h = hwxy[0] let w = hwxy[1] let x = hwxy[2] let y = hwxy[3] var b.. 2022. 5. 14.
[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.