본문 바로가기

백준177

Swift) 백준 2839번 (설탕 배달) 요구능력 : 잘 모르겠다. 코드설명 : 처음에는 5의 배수이면 그냥 5로 나눠버리면 그게 제일 적은 설탕봉지니까 조건을 줫고, N에 0을 준 이유는 아래에서 N이 0이 아니면 정확한 N킬로가 안나오다고 해둿기 때문이다. while문에 N > 0 를 조건으로 준 이유는 N을 지속적으로 빼고 나눌건데, 만약 정확한 N킬로가 나온다면 N은 0이 될거고 아니라면 N은 - 가 나올것이다. 계속 3으로 빼주고 5로 나눠지는지 확인하기 때문. 가방을 최대한 적게 들어야 된다고 했으므로, N을 3으로 빼다가 N이 5에 나누어 떨어진다면 N이 결국 최소한의 가방이 나온다. 후기 : 처음에 방향을 잘못잡아서 이상한 길에 빠져버리고 오래걸려버린.. var N = Int(readLine()!)! var result = 0 i.. 2021. 8. 6.
Swift) 백준 10250번 (ACM호텔) 요구능력 : 규칙 찾기 코드설명 : 문제를 읽어보면 위 사진에 표시해놓은 규칙이 나오게 된다. for문으로 겉에서 호수, 속에서 층수로 돌리고, 층수 구하는 for문에서 몇번째 손님일때 몇호인지를 쭉 세고, 그리고 입력받은 N이 count랑 같아지면 입력받은 손님번째랑 내가적은 손님번째가 같아지니까 그 때 호수를 출력하면 된다. 후기 : 평탄한 난이도의 문제인 것 같다. let T = Int(readLine()!)! for _ in 1...T { let arr = readLine()!.split(separator: " ").map{ Int($0)! } let H = arr[0] let W = arr[1] let N = arr[2] var count = 0 for i in 1...W { for j in 1.. 2021. 8. 6.
Swift) 백준 2869번(달팽이는 올라가고 싶다) 요구능력 : 수학적인 사고(?) 코드설명 : 문제를 보면서 적어보면서 수학공식이 나올거 같다 싶어서 Ax - B(x-1) = V 라는 공식을 생각해냈다.(x는 며칠(걸리는기간) 이다.) 처음에 위 공식의 x자리에 i를 넣고 반복문을 돌렸는데.. 시간초과가 나와버렸다. 그래서 그냥 일방적으로 x를 구해줘야겠다. 싶어서 식을 정리하니 x = (V - B) / (A - B)가 나왔다. 근데 이게 Int로 받고 출력하면 문제가 두번 째 예제 5 1 6을 입력 할 경우 A가 목적지보다 높이 올라가 버린다. 이런경우 처리를 위해 Double로 받고 그냥 올림 해버려서 1.25일이 걸리는걸 2일로 만들었다. 1.1일이든 1.01일이든 나오는건 결국 달팽이는 2일째에 도달하는 것이기 때문이다. 후기 : 평탄한 난이도의.. 2021. 8. 6.
Swift) 백준 1193번(분수찾기) 요구능력 : 대각선의 규칙을 찾느냐 못찾느냐 코드설명 : 이렇게 대각선 지그재그로 간단다. 그럼 규칙을 찾아보면 한대각선당 분자분모의 합이 같다. 1/1 || 1/2, 2/1 || 3/1, 2/2, 1/3 || 1/4, 2/3, 3/2, 4/1 || 5/1, 4/2, 3/3, 2/4, 1/5 ... 이렇게 나온다. 그럼 각각 합은 2, 3, 4, 5, 6이 나오게된다. 각각 개수는 1, 2, 3, 4, 5가 나오게된다. 나는 for문을 이용해서 sum에다가 i씩 더하면서 X보다 크거나 같을 경우 루프를 빠져나가도록 작성했다. 왜? 본질적인 이유는 count 변수를 이용해서 구하고자 하는 구간의 합을 구하기 위함이다. 입력받는 값은 X번째 수 이다. i를 위에서 말한 각각 개수라고 보면된다. X번째 수라는.. 2021. 8. 5.