728x90

SSAFY 62

[Python] 큐의 구조

큐 - 선입 선출 ( FirstInFirstOut - FIFO ) 공백 큐 생성createQueue() -1 || front = rear= -1 0 || 1 || 원소 a 삽입 enQueue(A); -1 || front = -1 0 || A가 삽입됨 || rear 1 || 원소 B삽입 : enQueue(B) -1 || front = -1 0 || A가 삽입됨 || 1 || B가 삽입됨 || rear front = -1 선형 큐 - 문제점 잘못된 포화상태 인식 선형 큐를 이용하여 원소의 삽입과 삭제를 계속할 경우, 배열의 앞 부분에 활용할 수 있는 공간이 있음에도 불구하고, rear = n-1 인 상태 즉, 포화상태로 인식 더이상 삽입을 수행하지 않는다. 0 || 1 || 2 || front 3 || re..

[Python] 스택 2

계산기 - 문자열로 된 계산식이 주어질 때, 스택을 이용하여 이 계산식의 값을 계산할 수 있다. - 문자열 수식 계산의 일반적 방법 ㄱ. 중위 표기법 수식 > 후외 표기법으로 변경 ㄴ. 후위 표기법 수식을 스택을 이용 계산 여기서, 중위 표기법이란? [ A+B 와 같이 일반적으로 우리가 사용하는 식 ] 후위 표기법이란? [ AB+ 연산자를 뒤로 보내 표기하는 방식 ] 일반식 : A*B-C/D 변환하는 방법 : 1. 수식의 각 연산자에 대해 우선순위에 따라 괄호 표현실시 ( (A*B)-(C/D) ) 2. 각 연산자를 그에 대응하는 오른쪽 괄호의 뒤로이동 ( (AB) *(CD) / )- 3. 괄호 제거 AB*CD/- 저의 방법 1. 일단 수식을 전부 적어줍니다. ABCD 2. 식의 우선순위에 따라 연산자를 ..

[Python] 스택

스택 - 물건을 쌓아 올리듯 자료를 쌓아 올린 자료구조 형태 - 스택에 저장 된 자료는 선형 구조 선형 :1:1 구조 관계 갖음 비선형 : 1:N 구조 - 스택에 자료를 삽입하거나 스택에서 자료를 꺼낼 수 있다. - 마지막에 삽입한 자료를 가장 먼저 꺼낸다. (후입 선출) 구현을 위한 자료구조, 연산 자료구조 : 자료를 선형으로 저장할 저장소 - C언어에서는 배열을 사용할 수 있다. - 저장소 자체를 스택이라 부르기도 한다. - 스택에서 마지막 삽입된 원소의 위치를 top이라 부른다. 연산 - 삽입 : 저장소에 자료를 저장한다. 보통 push라고 부른다. - 삭제 : 저장소에서 자료를 꺼낸다. 꺼낸 자료는 삽입한 자료의 역순으로 꺼낸다 . 보통 pop이라 함 - 스택이 공백인지 아닌지 확인 : isEmp..

[Python] 형변환(atoi, itoa) 및 패턴 매칭

atoi = String to Integer = 문자열을 숫자로 변환하는 녀석 입력을 받을때 int() 형을 붙이지 않고 input() 만 하면 숫자라도 바로 문자열로 변경됩니다. ex ) str = input() 이렇게 하면 숫자를 넣더라도 문자열로 자동 변환됨. (문자와 숫자 동시 입력 가능) itoa = Integer to String = 숫자를 문자열로 변환하는 녀석 입력을 받을때 int()를 붙여주면 된다. ex) num = int(input()) 고로면 이때 정수만 입력가능 단, 숫자만 입력가능 추가로 정수를 문자열로 받고싶을땐? str() 을 사용하면됩니다. ex) str(num) 이렇게 하시면 위에서는 정수로 받았지만 현재는 문자열로 됩니다. 패턴 매칭 브루트포스(BruteForce, 완전..

[Python] 이진 탐색(feat. [SWEA]4839.이진탐색)

이진 탐색은 공식(?많이쓰는) 코드를 활용하는 방법을 생각해보겠습니다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 def binSearch(key): cnt = 0 while left key: right = c else: left = c cnt += 1 T = (input()) for tc in range(1, T+1) # 보통 이런식의 테스트 케이스가 주어짐. #예)입력값을 입력하고 P, A, B = map(int, input().split()) #위 이진 탐색을 써준다 binSearch(A) binSearch(B) Colored by Color Scripter cs 이 친구를 활용하여 4839번 문제를 풀어보시면 됩니다.

[Python] 순차 검색

순차 검색 - 일렬로 되어 있는 자료를 순서대로 검색하는 방법 - 가장 간단, 직관적 - 순차구조로 구현된 자료구조에서 원하는 항목을 찾을때 - 알고리즘 단순 구현이 쉬움, 수행시간 급격 증가 비효율적 검색 과정 - 첫번째 원소부터 수서대로 검색 대상과 키 값(우리가 찾는 값)이 동일한지 찾는다. - 찾으면 그 원소의 인덱스(위치)or 값을 반환 - 자료구조 마지막까지 검색한다음 찾지 못하면 실패. - 정렬되어 있지 않은 경우 - 찾고자 하는 원소의 순서에 따라 비교회수가 결정됨 시간 복잡도:O(n) 예제 문제 ) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 arr = [4,9,11,23,19,7] key = 10 for i in range(len..

[Python] 2차원 배열 과 부분집합

2차원 배열의 선언 1차원 list를 묶어놓은 list 이다. 2차원 이상 다차원 list는 차원에 따라 index를 선언 2차원 list의 선언 : 세로길이 + 가로길이 python 에서는 데이터 초기화를 통해 변수선언과 초기화가 가능하다. arr = [[0,1,2,3,],[4,5,6,7]] - 2행 4열의 2차원 list 0 1 2 3 4 5 6 7 ex) arr[1][2] = 6 arr[2][1] = 인덱스 에러 보통 문제에서는 행과 열이 주어진다. 3, 4 입력은 아래와 같이 주어진다면 1 2 3 4 5 6 7 8 9 10 11 12 즉 행과 열, 2차원 값이 주어진다. *꼭 길이가 같지않아도된다 ex )1234 123 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 1..

[Python] 기본 입출력

짧고 굵게 입력 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 #문자열 1개 입력 받기 #tmp = input() #문자열 통으로 tmp에 한줄 입출력한다. #print(tmp) #정수 1개 입력 받기 # N = input() # print(N, type(N)) #정수 여러개 입력 받기( 2가지) #예시 - 4 5 6 7 8 9 # a,b,c,d,e,f = map(int,input().split()) # print(a,b,c,d,e,f) # # arr =list(map(int,input().split())) # print(arr) #한줄로 들어오는 입력 쪼개기 (문자열버전, 정수 버전) #asfdjheffjkashdfjk 입력이 들어오면?..

[Python] 배열

배열의 필요성 - 다수의 변수로는 하기 힘든 작업을 쉽게 할수있도록 도와준다. 1차원 배열 - 별도의 선언 방법이 없으면 변수에 처음 값을 할당할 때 - 배열 이름 (리스트 이름) Arr = list(), Arr = [] 1차원 배열 접근 Arr[0] = 10; Arr 의 0번재 원소에 10을 저장 Arr[idx] = 20; Arr의 idx 번째 원소에 20을 저장 정렬 - 2개 이상의 자료를 특정 기준에 의해 작은 값부터 큰 값( 오름차순 : ascending), 혹은 그반대 내림차순(descending) 으로 재배열 종류 - 버블 , 카운팅, 선택, 퀵, 삽입, 병합 버블 - 인접한 두 개의 원소를 비교하며 자리를 계속 교환하는 방식 과정 1. 첫 번째 원소부터 오름 / 내림 선택 (기본은 오름)하여..

[JAVA] 알고리즘 String

완전 검색(완전 탐색, DFS)// 펙토리얼이므로 시간 복잡도가 굉장히 낮습니다. - 문제의 해법으로 생각할 수 있는 모든 경우의 수를 나열해보고 확인하는 기법 - Brute-force 혹은 generate-and-test 기법이라고도 불린다. - 모든 경우의 수를 테스트한다. -상대 적으로 설계는 빨리할수있다. - 경우의 수가 상대적으로 작을 때 유용하다. 문제 예시 1)Baby-gin Game. 0~9 사이의 숫자 카드에서 임의의 카드 6장을 뽑았을 때, 3장의 카드가 연속적인 번호를 갖는 경우를 run이라 하고, 3장의 카드가 동일한 번호를 갖는 경우를 triplet이라고 한다. 그리고, 6장의 카드가 run,triplet으로만 구성된 경우를 baby-gin으로 부른다 6자리의 숫자를 입력 받아 b..

728x90