본문 바로가기

baekjoon46

[알고리즘/baekjoon] 2869_달팽이는 올라가고 싶다(python) 문제 https://www.acmicpc.net/problem/2869 2869번: 달팽이는 올라가고 싶다 첫째 줄에 세 정수 A, B, V가 공백으로 구분되어서 주어진다. (1 ≤ B < A ≤ V ≤ 1,000,000,000) www.acmicpc.net # 이 문제는 일반적으로 for, 부등호를 쓰는경우 시간초과 에러가 난다. # 핵심은 정상에 올라간 경우는 미끄러지지 않는다인데, 즉 ↑↓↑↓↑↓하다가 ↑해서 오르면 ↓(마이너스)를 하지 않는다는 것이다. # (A-B) 는 하루동안 오르는 높이이고, (V-B)는 목표지점에 가더라도 마지막은 내려가지 않기 때문에 나온 값이다. # k값이 나눠떨어지지 않으면 하루 더 필요하다는 의미이므로 1을 더해주고, 아니면 그냥 출력해준다. 정답 2021. 10. 19.
[알고리즘/baekjoon] 15829_Hashing(python) 문제 https://www.acmicpc.net/problem/15829 15829번: Hashing APC에 온 것을 환영한다. 만약 여러분이 학교에서 자료구조를 수강했다면 해시 함수에 대해 배웠을 것이다. 해시 함수란 임의의 길이의 입력을 받아서 고정된 길이의 출력을 내보내는 함수로 정 www.acmicpc.net # 문제가 길어 보이지만 핵심은 단 1가지이다. (수식은 문제에서 주어진다) # 알파벳(소문자)를 어떻게 표현해 줄 것인가? 문제에서 a는 1, b는 2.. 이렇게 표현할 수 있다고 한다. (문제를 잘 읽어야 하는 이유) # 그럼 a=1, b=2 어떻게 지정할 것인가 ? 여러 가지 방법이 있겠지만 필자는 문자를 아스키코드로 바꾸는 ord를 이용했다. 정답 * 코드가 궁금하시거나 잘 보이지 .. 2021. 10. 19.
[알고리즘/baekjoon] 2231_분해합(python) 문제 https://www.acmicpc.net/problem/2231 2231번: 분해합 어떤 자연수 N이 있을 때, 그 자연수 N의 분해합은 N과 N을 이루는 각 자리수의 합을 의미한다. 어떤 자연수 M의 분해합이 N인 경우, M을 N의 생성자라 한다. 예를 들어, 245의 분해합은 256(=245+2+4+5)이 www.acmicpc.net # 분해합 = 어떤수 + 어떤수의 각 자리 수의 합 # 여기서 구한는건 어떤수를 구하는 것이다! (문제를 잘 이해할 것) # brute force로 range의 범위를 1부터 N까지 정해도 되지만 실행시간이 오래 걸리는 단점이 있기 때문에 그것을 보완하기 위해 만든 코드이다 # 각 자리의 수의 합의 최대값은 자릿수*9(ex. 세자리수의 각자리수 합의 최대값은 각자.. 2021. 10. 19.
[알고리즘/baekjoon] 1157_단어 공부(python) 문제 https://www.acmicpc.net/problem/1157 1157번: 단어 공부 알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다. www.acmicpc.net - set, count, index, max의 사용법을 알고 있어야 한다. 정답 - 단어에서 각 알파벳이 몇번 사용되었는지 먼저 알아야 한다 -> set(중복 제거), count(횟수 세기) -> new_list 저장 - 가장 많이 사용된 알파벳을 알기 위해서 new_list의 최대값 개수가 1개를 초과하면 가장 많이 사용된 알파벳이 중복으로 존재한다는 의미이므로 "?" 출력한다. - 1개를 초과하지 않으면 new_list의.. 2021. 10. 16.