두두의 알고리즘 (145) 썸네일형 리스트형 [자료구조/알고리즘] 해시(Hash) - 해시 테이블, 파이썬 딕셔너리(Python Dictionary) 해쉬 테이블 (Hash Table) 1. 해쉬 구조 * Hash Table: 키(Key)에 데이터(Value)를 저장하는 데이터 구조 - Key를 통해 바로 데이터를 받아올 수 있으므로, 속도가 획기적으로 빨라짐 - 파이썬 딕셔너리(Dictionary) 타입이 해쉬 테이블의 예: Key를 가지고 바로 데이터(Value)를 꺼냄 - 보통 배열로 미리 Hash Table 사이즈만큼 생성 후에 사용 (공간과 탐색 시간을 맞바꾸는 기법) - 단, 파이썬에서는 해쉬를 별도 구현할 이유가 없음 - 딕셔너리 타입을 사용하면 됨 2. 알아둘 용어 해쉬(Hash) 임의 값을 고정 길이로 변환하는 것 데이터를 다루는 기법 중 하나로 검색과 저장이 아주 유용한 구조 key와 value 쌍으로 데이터를 저장한다. * 해쉬 테.. [진법변환] 프로그래머스 L1 '비밀지도' (Python) https://programmers.co.kr/learn/courses/30/lessons/17681 코딩테스트 연습 - [1차] 비밀지도 비밀지도 네오는 평소 프로도가 비상금을 숨겨놓는 장소를 알려줄 비밀지도를 손에 넣었다. 그런데 이 비밀지도는 숫자로 암호화되어 있어 위치를 확인하기 위해서는 암호를 해독해야 한다. 다 programmers.co.kr 2진수의 값을 AND 연산하여 2진수 문자로 출력 2진수의 맨 앞이 0일 경우, 0은 생략되므로 zfill() 메서드를 사용하여 길이 맞춰줌 #1차 시도. 3번 오류 def solution(n, arr1, arr2): zip_ = [] bin_ = [] for i,k in zip(arr1,arr2): zip_.append(i | k) for idx, j .. [진법변환] 백준 2745번 '진법 변환' (Python) https://www.acmicpc.net/problem/2745 2745번: 진법 변환 B진법 수 N이 주어진다. 이 수를 10진법으로 바꿔 출력하는 프로그램을 작성하시오. 10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를 www.acmicpc.net 진법 변환하는 법을 알고 있어야 함 파이썬 내장 함수가 없는 진법이므로 진법 함수를 새로 만들어준다. 각 자릿수를 곱할 수 있게 자릿수를 만들어 줌 ''' ZZZZZ 36 ''' import sys input_data = sys.stdin.read().rsplit() N = input_data[0] B = int(input_data[1]) arr = [] mult = 1 sum_= 0 arr.app.. [알고리즘] - 진법 변환/비트 연산 [진법 변환] 진법이란? 수를 셀 때 자릿수가 올라가는 단위를 기준으로 하는 셈법의 총칭 사용하는 숫자의 개수가 진법의 숫자를 의미 bin(10진수) #2진수로 바꿔주는 함수 oct(10진수) #8진수로 바꿔주는 함수 hex(10진수) #16진수로 바꿔주는 함수 int(2/8/16진수) #10진수로 바꿔주는 함수 [비트 연산] 비트 연산이란? 한 개 혹은 두 개의 이진수에 적용되는 연산 비트 연산의 종류 & (AND) ㅣ (OR) ^ (XOR) : 다르면 1, 같으면 0 ~ (NOT) 음수의 표현을 처리하기 위함 1을 더한 뒤 부호를 바꿔줌 bin(~0b0000) #-0b0001 bin(~0b0001) #-0b0010 bin(~0b0010) #-3 = -0b0011 bin(~0b0011) #-0b0100.. [진법변환] 백준 5692번 '팩토리얼 진법' (Python) https://www.acmicpc.net/problem/5692 5692번: 팩토리얼 진법 상근이는 보통 사람들이 사는 것과는 조금 다른 삶을 사는 사람이다. 상근이는 이런 사람들의 시선이 부담스럽기 때문에, 자신만의 숫자를 개발하기로 했다. 바로 그 이름은 팩토리얼 진법이다. www.acmicpc.net 팩토리얼 공식(n! = 1*2*3*...*(n-1)*n)을 알아야 풀 수 있음 Ex) 719 ==> (7 * 팩토리얼(3)) + (1 * 팩토리얼(2)) + 9 * 팩토리얼(1)) 입력이 몇 줄로 이루어지는지 모르므로 무한루프로 입력을 받고 계산하고 계산이 끝나면 바로 출력한다. '0'을 받으면 루프를 종료한다. '''입력 예제 719 1 15 110 102 0 ''' import sys def fa.. [탐욕법] 난이도1, 2019 국가 교육기관 코딩 테스트 '숫자 카드 게임' (Python) 숫자 카드 게임은 여러 개의 숫자 카드 중에서 가장 높은 숫자가 쓰인 카드 한 장을 뽑는 게임이다. 단, 게임의 룰을 지키며 카드를 뽑아야 하고 룰은 다음과 같다. 1. 숫자가 쓰인 카드들이 N x M 형태로 놓여 있다. 이때 N은 행의 개수를 의미하며, M은 열의 개수를 의미한다. 2. 먼저 뽑고자 하는 카드가 포함되어 있는 행을 선택한다. 3. 그다음 선택된 행에 포함된 카드들 중 가장 숫자가 낮은 카드를 뽑아야 한다. 4. 따라서 처음에 카드를 골라낼 행을 선택할 때, 이후에 해당 행에서 가장 숫자가 낮은 카드를 뽑을 것을 고려하여 최종적으로 가장 높은 숫자의 카드를 뽑을 수 있도록 전략을 세워야 한다. 예를 들어 3x3 형태로 카드들이 다음과 같이 놓여 있다고 가정하자. 3 1 2 4 1 4 2 .. [탐욕법] 난이도1, 2018 E 기업 알고리즘 대회 '1이 될 때까지' (Python) 어떠한 수 N이 1이 될 때까지 다음 두 과정 중 하나를 반복적으로 선택하여 수행하려고 한다. 단, 두 번째 연산은 N이 K로 나누어 떨어질 때만 선택할 수 있다. 1. N에서 1을 뺀다. 2. N을 K로 나눈다. 예를 들어서 N이 17, K가 4라고 가정하자. 이때 1번의 과정을 수행하면 N은 16이 된다. 이후에 2번의 과정을 두 번 수행하면 N은 1이 된다. 결과적으로 이 경우 전체 과정을 실행한 횟수는 3이 된다. 이는 N을 1로 만드는 최소 횟수이다. N과 K가 주어질 때 N이 1이 될 때까지 1번 혹은 2번의 과정을 수행해야 하는 최소 횟수를 구하는 프로그램을 작성하시오. 첫째 줄에 N(2 [탐욕법] 백준 10162번 '전자레인지' (Python) https://www.acmicpc.net/problem/10162 10162번: 전자레인지 3개의 시간조절용 버튼 A B C가 달린 전자레인지가 있다. 각 버튼마다 일정한 시간이 지정되어 있어 해당 버튼을 한번 누를 때마다 그 시간이 동작시간에 더해진다. 버튼 A, B, C에 지정된 시간은 www.acmicpc.net t가 a, b, c 보다 크면 t에서 a, b, c를 빼고, 1을 더해준다. t가 0이 되면 종료 t가 0이 되지 않을 수도 있는 경우는 10보다 작은 경우이므로 조건문 걸어줌 t가 0이면 결과값을 출력하고, 아니면 -1 출력 '''입력 예제 100 189 ''' t = int(input()) result = [0]*3 while t > 0: if t= 300: t -= 300 resul.. 이전 1 ··· 12 13 14 15 16 17 18 19 다음