Algorithm 썸네일형 리스트형 [Baekjoon]백준 15829 Hashing(브론즈 2) - Python 문제를 살펴보면 자료구조 시간에 배우는 해시 함수를 구현하는 문제이다해당 문제의 경우 a부터 z까지만 입력받아 이를 제곱연산 이후 나머지 연산을 통해 값을 출력하는 문제이다 문자열을 입력받을 때, list로 입력받으면서 strip()을 통해 한글자씩 리스트에 저장되도록 작성하였다이후 for문을 사용하여 문제에서 제시한 연산을 수행하면 되는데, enumerate를 사용하여 거듭제곱할 숫자와 리스트의 값(문자열)을 사용할 수 있게 작성하였다 문자열은 ord()를 통해 제곱할 수를 연산해주면 된다a는 아스키코드 값으로 97(10진수)인데, 문제에서 a는 1로 처리하기 때문에 -96을 해주면 된다import sysinput = sys.stdin.readlineLen = int(input())Eng = list(.. 더보기 [Baekjoon]백준 30802 웰컴 키트(브론즈 3) - Python 문제만 제대로 이해한다면 금방 해결할 수 있는 문제이다마지막 줄에는 한 묶음당 살 수 있는 수량을 입력받게 되며, 해당 수량을 바탕으로 티셔츠와 펜을 부족하지 않게 구입해야한다티셔츠의 경우 남아도 되고, 펜의 경우에는 한자루도 구입이 가능하기 때문에 이 점에 유의하여 코드를 작성해야한다먼저, 티셔츠의 경우 한 묶음당 살 수 있는 최대 수량보다 사야하는 양이 더 작다면 한 묶음만 사도 된다허나, 파이썬에서 // 연산자를 사용하게 되면 나머지는 버리고 몫만 저장하기 때문에 +1을 해주어야한다여기서 주의할 점은 모든 경우에 +1을 하면 안된다 예제처럼 5장을 사야하는데, 한 묶음이 5장인 경우에는 한 묶음만 사도 된다그렇기 때문에 나머지가 0인 경우에는 따로 계산하는 로직을 작성해야한다펜의 경우에는 인원수에 .. 더보기 [Baekjoon]백준 7568 덩치(실버 5) - Python 문제를 살펴보면 몸무게와 키를 입력받아 덩치가 큰 순서대로 랭킹을 매기는 문제이다 본인보다 몸무게와 키가 다 클때만 해당된다그래서 일단 리스트를 만들어 몸무게와 키 정보를 저장해주었다 이후에는 for문을 통해 각각 사람의 정보와 비교대상을비교해주어야하는데, 이를 위해 2중 for문을 형성하였다 랭킹을 매겨야하는데, 각각 비교를 할때 rank의 default값을1로 설정한 후에, 만약 본인보다 덩치가 더 큰 사람이 존재한다면 rank의 값에 1을 더해주는 방식으로 코드를 작성하였다이렇게 하게 된다면 따로 정렬할 필요없이 랭킹을 확인할 수 있다import sysinput = sys.stdin.readlinenum = int(input())people_info = []for _ in range(num): .. 더보기 [Baekjoon]백준 9375 패션왕 신해빈(실버 3) - Python 문제를 살펴보면 의상의 종류와 의상의 이름이 주어지고, 각 종류당 최대 하나씩을선택하여 만들어지는 모든 조합의 수를 구하는 문제이다이를 풀기 위해서는 조합과 딕셔너리를 활용하는 것이 좋을 것이라 생각하였다딕셔너리는 키-값 쌍으로 데이터를 저장할 수 있으며, 키에는 문자열 등 해시 가능한 객체를 사용할 수 있다이를 활용하여 의상의 종류를 키로 설정하고, 해당 종류에 속한 의상 이름들을 값으로 저장하는 방식으로 구현하였다 일단, 테스트 케이스를 입력받고, 그에 따라 반복문에 의해 입력이 반복된다의상의 이름과 종류는 input().split()으로 분리하여 입력을 받고 만약 딕셔너리에 옷의 종류가 저장되어있다면append()로 옷의 이름을 추가해주고, 만약 아니라면 새로 값을 저장해준다경우의 수를 구하는 것은.. 더보기 [Baekjoon]백준 16953 A → B(실버 2) - Python 문제를 살펴보면 A 정수를 B로 만드는데, 2를 곱하거나 숫자의 끝자리에 1을 추가하는 방식으로만 이루어진다만약, 해당 방법으로는 B로 만들수 없다면 -1을 출력하는 문제이다우선적으로, A에서 B를 만드는 방법도 고려해보았으나 최솟값을 구해야한다는 점, 그리고 B를 정확하게 맞추어야하기 때문에코드상에서는 B에서 A를 만드는 방법이 더욱 간단할 것이라 생각하였다 그래서 while문을 통해 두번째로 입력받은 숫자가 첫번째로 입력받은 숫자보다 같거나 작아질때까지연산을 반복적으로 수행하도록 작성하였다 연산을 반복할 때 끝자리가 1인 경우는 이전에 1을 붙인 경우밖에없기 때문에(2를 곱해서 1이 나올수 없기 때문) 끝자리가 1이라면 10을 나누어 숫자를 복구해준다만약 그게 아니라면 무조건 2를 곱한 것이기 때문에.. 더보기 [Baekjoon]백준 18110 solved.ac(실버 4) - Python 문제를 살펴보면 절사평균을 출력하는 문제인데, 각 소수점에 대해 반올림해야하는 조건이 추가되어있다Python에는 round함수가 있기 때문에 이를 활용하여 코드를 작성하였다 먼저 정보들을 입력받는 코드를 작성해주었고 30%절사평균의 경우 앞 15%, 뒤 15%를 제외한 후에나머지 값들에서 평균을 구하는 것이기 때문에 슬라이싱을 할 size를 구해야한다그래서 num * 0.15를 하고 round를 해주어 정수로 변환해주었다이후 입력받은 정보를 sort한 후에(정렬되있는 상태에서 15%를 제외해야하기 때문)이를 슬라이싱해준다이후 슬라이싱된 리스트의 평균을 출력하도록 코드를 작성하였다import sysinput = sys.stdin.readlineall_level = []num = int(input())for.. 더보기 [Baekjoon]백준 2606 바이러스(실버 3) - Python 문제를 살펴보면 연결된 컴퓨터 쌍을 보고 1번 컴퓨터를 통해 감염되는 컴퓨터 수를 구해야한다해당 예제를 설명하기 위한 간단한 그림이 문제에 설명되어있는데, 이를 보면 그래프를 활용하는 것이가장 간단할 것이라 생각하였다 연결 관계에 따라 탐색하기에 제일 적합한 구조이기 때문이다 일단 컴퓨터의 수, 컴퓨터 쌍의 수, 각 연결 정보를 입력받는 코드가 선행되어야한다각 연결 정보를 저장하는 리스트가 추가로 필요한데, [a]의 위치에는 a와 연결된 컴퓨터가 저장되도록 해야한다a, b를 입력받게된다면 graph[a].append(b), graph[b].append(a)가 실행되어야 양방향으로 정보가 저장된다computer_num = int(input())connection = int(input())graph = [[.. 더보기 [Baekjoon]백준 1003 피보나치 함수(실버 3) - Python 문제를 살펴보면 피보나치를 활용하였는데, 그 과정속에서 0과 1이 총 몇번 출력되었는지 출력하는 문제이다처음에는 문제에서 제시한 C++ 함수를 활용하여 코드를 작성하였는데, 시간이 0.25초로 짧기 때문에해당 코드를 제출하면 시간초과가 발생한다import sysinput = sys.stdin.readlinedef fibonacci(num): global zero_count global one_count if num == 0: zero_count += 1 return 0 elif num == 1: one_count += 1 return 1 else: return fibonacci(num-1) + fibonacci(nu.. 더보기 이전 1 2 3 4 5 6 ··· 9 다음