이카's
반응형
article thumbnail
자료구조 - 배열 (feat. Java, Python), 자매품 - Java Collection ArrayList
SW/자료구조 2023. 6. 1. 02:30

배열이란? 배열을 왜 쓸까? 같은 종류의 데이터를 관리하기 하기 위해서 같은 종류의 데이터를 순차적으로 저장 대전제는 데이터를 쉽게 관리하는 목적이다. 그것을 한 묶음으로 관리하는게 효율적이다. 근데 이걸 또 순차적으로 있다면? 한눈에 봐도 데이터를 다루기가 쉬울 것이다. 장점 - Index 배열의 가장 큰 장점은 Index라고 할 수 있다. 배열는 공간에 각각의 element 마다 각각의 index가 생긴다. (각각각각) 각 요소에 번호가 생기면 데이터 안에 하나의 값만 가져올 때 굉장히 편해진다. 또한 값을 찾을 때 소모되는 비용은 index로 인해 시간복잡도 O(1)을 가진다. 단점 - 배열의 크기설정 & 추가/삭제 배열의 가장 큰 단점 데이터를 삭제와 추가 하는 부분에서 발생한다. 배열은 크기를 ..

[알고리즘/삽입정렬] #Insertion_Sort / in Python
SW/자료구조 2020. 10. 7. 14:54

삽입 정렬 - 숫자를 오름차순으로 정렬하는 프로그램 arr = [3, 4, 5, 1, 2]이라는 리스트가 있을 때 이것을 어떻게 오름차순으로 정렬할까? 삽입정렬은 앞의 있는 원소들이 이미 정렬되어있다고 가정을 한다 라는 특성이 있다. 즉, 하나의 원소를 선택 후 삽일 할 위치에 보내는 방법을 삽입 정렬이라고 한다. #1 [1, 3, 4, 5, 2] #1 선택해 맨 처음 자리로 이동 [(1) _, 3, 4, 5, (1), 2] 빈 공간이 있다고 생각하고 이동 #2 [1, 2, 3, 4, 5] #2 선택해 공간의 위치에 이동 1과 3 사이 [_, 1, (2)_, 3, _, 4, 5, (2)] #3 [1, 2, 3, 4, 5] #3 선택해 자리 이동 //변화 없음... #4 [1, 2, 3, 4, 5] #4 ..

[알고리즘/버블정렬] #Bubble_Sort / in Python
SW/자료구조 2020. 10. 7. 14:28

버블 정렬 숫자를 오름차순으로 정렬하는 프로그램 하지만 쉽게 해석하려면 가장 큰 숫자를 맨 뒤로 보내는 것과 같다고 생각하면 된다. arr = [3, 4, 5, 1, 2]이라는 리스트가 있을 때 이것을 어떻게 오름차순으로 정렬할까? 두 수를 선택해서 큰값을 뒤로 보내는 방법을 버블 정렬이라고 한다. #1 [3, 4, 5, 1, 2] #3과 4을 자리 바꾸기 // 변하지 않음 #2 [3, 4, 5, 1, 2] #4와 5 자리 바꾸기 // 변하지 않음 #3 [3, 4, 1, 5, 2] #1과 5 자리 바꾸기 #4 [3, 4, 1, 2, 5] #2와 5 자리 바꾸기 순서로 진행된다. 결국 5가 가장 마지막이고 1은 가장 처음으로 온다. 코드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 ''' 반..

[알고리즘/선택정렬] #Selection Sort / in Python
SW/자료구조 2020. 10. 7. 13:10

선택 정렬 숫자를 오름차순으로 정렬하는 프로그램 arr = [3, 4, 5, 1, 2]이라는 리스트가 있을 때 이것을 어떻게 오름차순으로 정렬할까? 가장 작은 숫자를 선택해서 앞으로 보내는 방법을 가장 먼저 떠올릴 수 있다. #1 [1, 4, 5, 3, 2] #1과 3을 자리 바꾸기 #2 [1, 2, 5, 3, 4] #2와 4 자리 바꾸기 #3 [1, 2, 3, 5, 4] #3과 5 자리 바꾸기 #4 [1, 2, 3, 4, 5] #4와 5 자리 바꾸기 순서로 진행된다. 코드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 ''' #반복문 사용 i, j >>> 배열에 있는 원소 반복적으로 탐색 min_index >>> 최솟값 원소 "위치" ''' def selection_sort..

article thumbnail
Baekjoon #2292번 벌집 [Python]
알고리즘 문제풀이/BOJ 2020. 10. 6. 19:58

www.acmicpc.net/problem/2292 2292번: 벌집 위의 그림과 같이 육각형으로 이루어진 벌집이 있다. 그림에서 보는 바와 같이 중앙의 방 1부터 시작해서 이웃하는 방에 돌아가면서 1씩 증가하는 번호를 주소로 매길 수 있다. 숫자 N이 주어졌�� www.acmicpc.net 문재해석 처음 보는순간 수열이라는 것을 쉽게 발견 할 수 있다. 솔직히 백준 수학 알고리즘 수학 1 파트를 풀고 있지만 규칙은 어렵지않게 발견했지만 구현이 쉽지가 않다. 이번에도 조금 힘들었다. 조건1) room은 초기방 숫자가+6씩 수열로 증가 할때마다 room +1 씩 해주면 된다. 코드를 풀어보자면 처음 숫자가 1번 일때는 그대로 출력 // #1번째 방 초기값을 7로 잡아서 구하고자하는 값이, 예를들어 6일때 ..

article thumbnail
Baekjoon #2839번 설탕배달 [Python]
알고리즘 문제풀이/BOJ 2020. 10. 6. 18:02

www.acmicpc.net/problem/2839 2839번: 설탕 배달 상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그�� www.acmicpc.net 문재해석 정말 애먹었다. 처음 해석은 쉬운데 이걸 구현하기가 생각보다 까다롭다. 다들 3의 배수 5의 배수로 생각을 하다가 생각해보면 의외로 그렇지 않는 경우도 있다. (예를들어 11의배수도 있고...) 아무튼 고민끝에 푸는 방법은 간단했다. 조건1) 5의 배수일때 무조건 5를 빼준다. 그리고 카운터 + 1 조건2) 5의 배수가 아닌거는 무조건 3을 빼준다. 그리고 카운터 + 1 이렇게 돌리면 11, 16과 같은 경우..

article thumbnail
baekjoon #1712번 손익분기점 [Python]
알고리즘 문제풀이/BOJ 2020. 10. 6. 15:57

www.acmicpc.net/problem/1712 1712번: 손익분기점 월드전자는 노트북을 제조하고 판매하는 회사이다. 노트북 판매 대수에 상관없이 매년 임대료, 재산세, 보험료, 급여 등 A만원의 고정 비용이 들며, 한 대의 노트북을 생산하는 데에는 재료비와 www.acmicpc.net 문재해석 처음에는 for 문으로 곱하기를 해서 결과를 구하려고 했다. 하지만 몇번을 돌릴지 조건이 나와있지않았고, 더 까다롭다는걸 알았다. 그래서 고민끝에 알아낸 방법이 나누는 것이었다. (하지만 이미 많은 분들은 이렇게 푸셧다..) 뭔가 대단한걸 발견한줄 알앗는데 코드까지 똑같앗다. 조건1) b가 c보다 크거나 같으면 손익분기점이 절대 없다. 왜냐하면 a 를 더하기 때문이다... 무조건 차익에서 이득이 나야 수익이..

article thumbnail
baekjoon #1316번 그룹단어체커 [Python]
알고리즘 문제풀이/BOJ 2020. 10. 6. 14:45

www.acmicpc.net/problem/1316 1316번: 그룹 단어 체커 그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. 예를 들면, ccazzzzbb는 c, a, z, b가 모두 연속해서 나타나고, kin도 k, i, n이 연속해서 나타나기 때� www.acmicpc.net 문제해석 문제 해석은 어렵지 않았다. 그룹 단어를 카운트 해야 되는데, 조건 1) 서로 다른 단어 일 경우 카운트 +1 조건 2) 같은단어가 연속으로 나오지만, 뒤에 연속으로 나왓던 단어가 나오지 않을 경우 카운트 +1 문제 해석은 쉬운데 구현이 어려웠다. 두문자를 비교하는 조건을 체크하는건 쉬웠는데, 그 후 카운터를 어떻게 올려야 할지 몰랏다. 여러 오픈소스를 보고 횟수만큼 ..

article thumbnail
Baekjoon #2941번 크로아티아 알파벳 [Python]
알고리즘 문제풀이/BOJ 2020. 10. 6. 01:25

www.acmicpc.net/problem/2941 2941번: 크로아티아 알파벳 예전에는 운영체제에서 크로아티아 알파벳을 입력할 수가 없었다. 따라서, 다음과 같이 크로아티아 알파벳을 변경해서 입력했다. 크로아티아 알파벳 변경 č c= ć c- dž dz= đ d- lj lj nj nj š s= ž z= www.acmicpc.net 문재 해석) 처음에는 이게 뭔말인가 싶었다. 하지만 출력 글을 읽어보니 크로아티아 문자열로 변환 후 그 문자열의 인덱스를 구하면 되는 것이었다. 이렇게 해석하면 간단하게 풀 수 있다. 1 2 3 4 5 6 7 str_list = ['c=', 'c-', 'dz=', 'd-', 'lj', 'nj', 's=', 'z='] s = input() for i in str_list: s..

article thumbnail
Baekjoon #5622번 다이얼 Python
알고리즘 문제풀이/BOJ 2020. 10. 5. 22:44

www.acmicpc.net/problem/5622 5622번: 다이얼 첫째 줄에 알파벳 대문자로 이루어진 단어가 주어진다. 단어는 2글자~15글자로 이루어져 있다. www.acmicpc.net 문재해석) 어렵지 않은문제다. 쉽게 생각하면 정말 쉽게 풀 수있다. 물론 이보다 쉽게 풀수 있는 방법이 있겠지만, 직관적으로 풀어봤다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 s = input().upper() num_sum = 0 for i in s: if i in "ABC": num_sum += 3 elif i in "DEF": num_sum += 4 elif i in "GHI": num_sum += 5 elif i in "JKL": n..

article thumbnail
Baekjoon #2908번 상수 Python
알고리즘 문제풀이/BOJ 2020. 10. 5. 16:37

www.acmicpc.net/problem/2908 2908번: 상수 상근이의 동생 상수는 수학을 정말 못한다. 상수는 숫자를 읽는데 문제가 있다. 이렇게 수학을 못하는 상수를 위해서 상근이는 수의 크기를 비교하는 문제를 내주었다. 상근이는 세 자리 수 두 � www.acmicpc.net 문재 해석 두 문자열이 주워졌을때, 문자열을 거꾸로 읽어서 더 큰수를 찾는 문제이다. 처음에는 조금 헤맸다. 하지만 reversed()를 써서 마지막 번호를 대입하는 형식으로 풀어나갔다. 1 2 3 4 5 6 7 8 9 10 11 12 13 s, r = list(map(str, input().split())) temp1 = '' temp2 = '' for j in reversed(range(len(s))): temp1 ..

article thumbnail
Baekjoon #1152번 단어의갯수 Python
알고리즘 문제풀이/BOJ 2020. 10. 5. 15:24

1 2 s = list(map(str,input().split())) print(len(s)) cs 너무 쉬워서 건너 뛴다.

반응형