본문 바로가기

분류 전체보기

(440)
[알고리즘] 재귀함수 - (팩토리얼(Factorial) / 피보나치 수열(Fibonacci)) 재귀 함수란? 메서드/함수의 내부에서 자기 자신의 메서드/함수를 다시 호출하는 함수 Fractal 구조. Sierpinski Triangle 재귀 함수의 특징 재귀 함수 초반에 등장하는 조건문이 종료 조건 역할을 수행 재귀 함수는 내부적으로 스택 자료구조와 동일함 재귀 함수는 최대 1000번까지 가능 코드의 간결화 및 변수 사용 최소화를 위해 사용함 재귀 함수의 예 [인덱스의 모든 합] 성분들의 합으로 표현할 수 있는 숫자의 경우의 수는? #8 → 부분집합의 개수 2en → 3,5,8이 선택이 되느냐 안되느냐니까 각 수마다 2가지 경우가 있다 → 단, 3+5 = 8이므로 중복됨 #반복문 data = [3,5,8] result = set() for i in range(2): for j in range(2)..
[해시] 프로그래머스 L2 '전화번호 목록' (Python) https://programmers.co.kr/learn/courses/30/lessons/42577 코딩테스트 연습 - 전화번호 목록 전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다. 전화번호가 다음과 같을 경우, 구조대 전화번호는 영석이의 전화번호의 접두사입니다. 구조 programmers.co.kr 한 번호가 다른 번호의 접두어인 경우를 확인하면 되므로 정렬시켜서 바로 앞, 뒤만 비교 #1차시도 - 테스트 13 실패, 효율성 1,2,3,4 실패 def solution(phone_book): answer = True dic = dict() for idx,i in enumerate(sorted(phone_book)): dic[i] = idx for i in..
[해시] 프로그래머스 L1 '완주하지 못한 선수' (Python) https://programmers.co.kr/learn/courses/30/lessons/42576 코딩테스트 연습 - 완주하지 못한 선수 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수 programmers.co.kr 동명이인을 구분하기 위해 참가자의 이름별로 1씩 더한다. (동명이인이라면 2가 되니까) 완주자 명단에 있는 이름은 1을 뺀다. 완주하지 못한 사람은 한 명뿐이므로 값이 1인 이름을 출력한다. #1차시도 - 정확성 1,3,4,5 효율성 1,2,3,4,5 실패 def solution(participant, completion): answer = ..
[해시] 백준 15829번 'Hashing' (Python) https://www.acmicpc.net/problem/15829 15829번: Hashing APC에 온 것을 환영한다. 만약 여러분이 학교에서 자료구조를 수강했다면 해시 함수에 대해 배웠을 것이다. 해시 함수란 임의의 길이의 입력을 받아서 고정된 길이의 출력을 내보내는 함수로 정 www.acmicpc.net 아스키코드를 정수로(ord), 정수를 아스키코드로(chr) 변환하는 함수 사용 문제에 나와있는 공식대로 코딩 ''' 5 abcde 3 zzz 1 i ''' import sys input_data = sys.stdin.readline().rstrip() L = int(input_data.split()[0]) S = input_data.split()[1] hash = dict() for idx, i..
[자료구조/알고리즘] 해시(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..

LIST