본문 바로가기

Algorithm236

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.
Swift) 백준 2292번 요구능력 : 규칙을 찾아서 구현할수있느냐 코드설명 : 우선 규칙을 찾아야된다. 1일 때는 1개 2~7일 때는 2개 (범위 : 6) 8~19일 때는 3개 (범위 : 12) 20~37일 때는 4개 (범위 : 18) 38~61 일 때는 5개 (범위 : 24) . . 보면, 1일 때를 제외하고 아래로 내려갈수록 범위가 6씩 늘어난다. 이제 이 규칙을 이용해서 문제를 풀어야한다. 내가 생각하면서 풀어간 순서대로 적어보겠다.(아래코드 참조하면서 봐주세요.) 1. 1은 따로 처리를 해줘야한다. 왜? 1은 구해놓은 규칙과 연관성이 없기 때문에.. 애초에 1을 제외하고 구한 규칙이다. 2. 규칙으로 식을 만들어보자. 우리는 sum에 1을 넣어야된다. 왜? 1을 제외한 규칙이기 때문에 1부터 시작해야된다. for문안에서 .. 2021. 8. 5.
Swift) 백준 1712번 요구능력 : 수학적으로 풀 생각을 할 수 있느냐 코드설명 : A는 고정비용, B는 가변비용, C는 노트북판매가격이다. 식을 적어봤는데 A + (B * ?) = C * ? 이면 총 수입과 총 이익이 같아지는것 이다. 처음에 해본거 while totalSell > totalInput { count += 1 totalSell = A + (B * count) totalInput = C * count } 이거 해보니까 너무 오래걸린다. 21억까지 끝날기미가안보인다. 그래서 다음으로 생각한거 수학적으로 풀어봐야겠다. 참고로 x는 노트북 판매대수이다. A + Bx = Cx -> A + (B - C)x = 0 -> A = (C - B)x -> A / (C - B) = x 위에서 count를 반복문으로 구하던걸 x로 구.. 2021. 8. 3.