BOJ 5

[Swift] BOJ 1516 게임 개발

BOJ 1516 게임 개발 ✅ 이 문제는 위상 정렬 문제인데 시간을 계산해야 해서 알고리즘이 약간 복잡했다. 근데 풀다가 못풀 것 같았는데 맞았을 때의 희열감이란,, ㅎ 🟠 문제풀이 플로우 우선 input은 기존의 위상정렬과 동일하게 Input을 받는다. 다만 중요한건, 시간을 처리하는 부분이다. 1. 우선 초기에 queue에 들어간 값의 경우에는 시간을 계산할 수 계산할 수 없어서 result에 세팅 2. while문을 위상정렬과 동일한 로직으로 돈다. -> while문 내에서 maxTime을 계산해주는데 2-1. 내 선수(내가 만족해야 하는 조건)의 초기 time값과 갱신된 시간을 비교하여 더 큰 값을 maxTime에 넣어준다. 2-2. 이 코드를 보자. result[i] = max(result[i]..

[Swift] BOJ 1766 문제집

BOJ 1766 문제집 ✅ 이것도 위상정렬 문제입니다. 위상정렬 알고리즘은 쉬운데 어느때에 사용해야할 지 판단하는게 중요하다. 물론 위상정렬 알고리즘 포스팅에도 적어 두었지만, 방향 그래프의 모든 노드를 방향성에 거스르지 않도록 순서대로 나열하는 것'이다. 쉽게 말해서 선수과목 같은 조건이 있는 경우에 사용한다. ✅ 코드 알고리즘은 줄 세우기 알고리즘과 같다. 다만, queue를 sort해야하는 부분만 조금 다르며, queue의 경우에는 줄 세우기는 데이터가 커서 index로 접근하지만 이 문제에서는 removeFirst로 처리한다. 2022.05.24 - [코딩테스트] - [Swift] BOJ 2252 줄 세우기 //https://www.acmicpc.net/problem/1766 import Foun..

[Swift] BOJ 2252 줄 세우기

BOJ 2252 줄 세우기 ✅ 위상 정렬 문제이다. 진짜 많이도 틀렸다. 1. 2개의 틀렸습니다. 알고리즘 후에 마지막으로 출력할 때 1 2 3으로 해야하는걸 [1,2,3]으로 반환했기에 이를 수정해주었다. 2. 시간초과 3개는 동일 알고리즘에서 시간 초과가 나서 readLine 부분을 수정하였다. 처음에 readLine 부분을 개선하니 11%에서 시간초과 나던게 15%에서 시간초과가 나니 약간의 개선 효과는 있었던 듯 싶다. // 시간초과 11% readLine()!.split(separator: " ").map { Int($0)! } // 시간초과 15% (개선코드) readLine()!.split(separator: " ").map { Int(String($0))! } 3. 맞았습니다. 문제는 in..

[Swift] BOJ 12738 가장 긴 증가하는 부분 수열 3

BOJ 12738 가장 긴 증가하는 부분 수열 3 ✅ 풀었다. 일단 이 문제는 dp를 사용해서 풀려고 했었는데, 시간 초과로 다른 접근 방법이 필요했다. 2022.04.01 - [코딩테스트] - [Swift] BOJ 11053 가장 긴 증가하는 부분 수열 [Swift] BOJ 11053 가장 긴 증가하는 부분 수열 BOJ 11053 가장 긴 증가하는 부분 수열 ✅ dp라는데 진짜 어려웠다. 우선 알고리즘 풀이법이 이해가 가지 않았다. 주어진 값이 10 20 10 30 20 50 있다고 가정하자. list 10 20 10 30 20 50 dp 1 2 1 3 2 4.. rldd.tistory.com 위의 문제는 dp로 해결이 가능했었는데 아무튼 아이디어가 도통 떠오르지 않아서 다른 분들의 로직을 참고하였음...

[Swift] BOJ 1931회의실 배정

BOJ 1931회의실 배정 ✅ 알고리즘 자체는 쉬웠음 먼저 정렬을 해야하는데, 끝나는 시간을 기준으로 수행하며 만약 그 끝나는 시간이 같다면 시작 시간이 빠른 것을 앞에다가 배치함. 그 이후로는 그리디(그냥 for문 다 돌리라는 말)로 풀면 되는데, 현재 시간과 시작시간을 비교해서 시작시간이 같거다 더 뒤에 있으면 카운트를 증가시키고 현재 시간을 끝나는 시간으로 바꿔주면 된다. 포스팅을 한다는 건 생각보다 오래 걸렸단 말이겠지? 백준 문제가 너무 불친절해서,, 테스트 케이스가 하나만 있던데, 당연히 정렬이 되어있는줄 알았음. 정렬이 안되어 있어서 그래서 정렬하니까 완료 나는 처음에 85%쯤에서 막혔는데 반례를 찾았음 [반례] 3 3 3 2 3 3 3 올바른 답: 3 let iterator : Int! =..