분류 전체보기

    [BOJ] 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 ■ 문제 본 문제는 solved.ac 브론즈 2 문제이다. ■ 풀이 음.. 이 문제를 푸는데에 고민이 많았던 것 같다. 처음 나의 계획은, N에서부터 하나씩 마이너스 해주면서, 분해합을 만족하는 값을 찾는다. 분해합을 구했을 경우, 반복문 탈출을 하려 했으나, 문제가 있었다. 여기서는 N의 가장 작은 생성자를 구하라고 하였다. 그래서 시간초과로 안될 것 ..

    [BOJ] 2869 달팽이는 올라가고 싶다 - Python

    ■ 문제 링크 https://www.acmicpc.net/problem/2869 2869번: 달팽이는 올라가고 싶다 첫째 줄에 세 정수 A, B, V가 공백으로 구분되어서 주어진다. (1 ≤ B < A ≤ V ≤ 1,000,000,000) www.acmicpc.net ■ 문제 본 문제는 solved.ac 브론즈 1 문제이다. ■ 풀이 나는 이 문제를 풀때 우선 처음 이 방식으로 접근했다. 이 수식에 대해 설명하자면, 달팽이가 낮에 올라가고 밤에 내려오는 것이 A-B 이걸 x번 반복했다고 생각하는 것이다. 그리고 여기서 중요하게 보아야 할 것이, 달팽이가 마지막 날에 A미터를 올라가서 그게 나무막대의 길이보다 크거나 같으면, 이미 도착했으니 굳이 내려올 필요가 없다. 올라가는데 걸리는 시간은, x에 1(마..

    [BOJ] 1157 단어공부 - Python

    ■ 문제 링크 https://www.acmicpc.net/problem/1157 1157번: 단어 공부 알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다. www.acmicpc.net ■ 문제 본 문제는 solved.ac 브론즈 1 문제이다. ■ 풀이 대소문자를 구분하지 않는다 + 알파벳을 대문자로 출력한다. => 입력받는 단어의 알파벳을 모두 대문자로 변환하여 word 변수에 저장한다. 그 후, 중복을 제거하기 위해, list(set(word))를 해주며, word_list에 중복이 제거된 알파벳이 들어가게 된다. 이제 그 word_list에 중복이 제거된 알파벳들이, word에 몇 개씩 들어가..

    [BOJ] 1181 단어 정렬 - Python

    ■ 문제 링크 https://www.acmicpc.net/problem/1181 1181번: 단어 정렬 첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다. www.acmicpc.net ■ 문제 본 문제는 solved.ac 실버5 문제이다. ■ 풀이 N을 입력받고, N개의 단어를 입력받으며, word_list에 이미 존재하는 단어일 시, 리스트에 append 하지 않도록 하여 단어 중복을 제거하였다. 그 후, 정렬 기준을 lambda함수를 이용하여 정의해 주었다. 첫 번째 정렬 기준 : 단어 길이 두 번째 정렬 기준 : 단어 (사전순으로) 그리고 word..