알고리즘
-
[자료구조] 링크드 리스트 : 추가연산 , 접근연산알고리즘 2023. 12. 10. 23:08
링크드 리스트 - 데이터를 순서대로 저장해준다. - 요소를 계속 추가할 수 있다. 링크드 리스트 만들기 실습 class Node: """링크드 리스트의 노드 클래스""" def __init__(self, data): self.data = data #노드가 저장하는 데이터 self.next = None # 다음 노드에 대한 래퍼런스 #데이터 2, 3, 5, 7, 11 을 담는 노드들 생성 head_node = Node(2) node_1 = Node(3) node_2 = Node(5) node_3 = Node(7) tail_node = Node(11) #노드들을 연결 head_node.next = node_1 node_1.next = node_2 node_2.next = node_3 node_3.next =..
-
[자료구조] 파이썬 리스트 (동적 배열) 정의 크기 시간복잡도 분할 상환 분석 비교, 삽입 연산알고리즘/파이썬 2023. 12. 4. 00:00
정적 배열 : 크기 고정(요소 수 제한, 보통 배열 지칭) 동적 배열 : 크기 변함(요소 계속 추가 가능) 사실 이미 동적 배열을 사용하고 있는데, 파이썬의 리스트가 동적 배열이다. int_list = [2, 3, 5, 7, 11] 여기에 새로운 값을 추가할 수도 있다. int_list.append(13) 우리 입장에서는 내부적으로 얼마나 큰 배열이 있는지 몰라도, 값을 마음대로 추가할 수 있다. 동적 배열이기 때문에 상황에 맞게 배열 크기가 조절되고 있는 것이다. 그럼 리스트를 사용할 때 현재 내부적으로 사용되고 있는 배열의 크기를 모른다. 아무리 저장한 데이터가 6개여도 내부적으로는 8개짜리 배열일 수도 있고, 12개짜리 배열일 수도 있고.. 알수가 없다. 그럼 만약 리스트의 길이를 출력하면 뭐가 나..
-
[알고리즘] 프로그래머스 level2- 영어 끝말잇기(JAVA)알고리즘 2023. 10. 9. 22:33
설명 1부터 n까지 번호가 붙어있는 n명의 사람이 영어 끝말잇기를 하고 있습니다. 영어 끝말잇기는 다음과 같은 규칙으로 진행됩니다. 1. 1번부터 번호 순서대로 한 사람씩 차례대로 단어를 말합니다. 2. 마지막 사람이 단어를 말한 다음에는 다시 1번부터 시작합니다. 3. 앞사람이 말한 단어의 마지막 문자로 시작하는 단어를 말해야 합니다. 4. 이전에 등장했던 단어는 사용할 수 없습니다. 5. 한 글자인 단어는 인정되지 않습니다. 다음은 3명이 끝말잇기를 하는 상황을 나타냅니다. tank → kick → know → wheel → land → dream → mother → robot → tank 위 끝말잇기는 다음과 같이 진행됩니다. - 1번 사람이 자신의 첫 번째 차례에 tank를 말합니다. - 2번 사..
-
[알고리즘] 프로그래머스 level1 - 숫자 문자열과 영단어(JAVA)알고리즘 2023. 10. 7. 00:03
설명 네오와 프로도가 숫자놀이를 하고 있습니다. 네오가 프로도에게 숫자를 건넬 때 일부 자릿수를 영단어로 바꾼 카드를 건네주면 프로도는 원래 숫자를 찾는 게임입니다. 다음은 숫자의 일부 자릿수를 영단어로 바꾸는 예시입니다. - 1478 → "one4seveneight" - 234567 → "23four5six7" - 10203 → "1zerotwozero3" 이렇게 숫자의 일부 자릿수가 영단어로 바뀌어졌거나, 혹은 바뀌지 않고 그대로인 문자열 s가 매개변수로 주어집니다. s가 의미하는 원래 숫자를 return 하도록 solution 함수를 완성해주세요. 참고로 각 숫자에 대응되는 영단어는 다음 표와 같습니다. 숫자 영단어 0 zero 1 one 2 two 3 three 4 four 5 five 6 six..
-
[알고리즘] 프로그래머스 level1 - 같은 숫자는 싫어(JAVA)알고리즘 2023. 10. 5. 23:31
설명 배열 arr가 주어집니다. 배열 arr의 각 원소는 숫자 0부터 9까지로 이루어져 있습니다. 이때, 배열 arr에서 연속적으로 나타나는 숫자는 하나만 남기고 전부 제거하려고 합니다. 단, 제거된 후 남은 수들을 반환할 때는 배열 arr의 원소들의 순서를 유지해야 합니다. 예를 들면, - arr = [1, 1, 3, 3, 0, 1, 1] 이면 [1, 3, 0, 1] 을 return 합니다. - arr = [4, 4, 4, 3, 3] 이면 [4, 3] 을 return 합니다. 배열 arr에서 연속적으로 나타나는 숫자는 제거하고 남은 수들을 return 하는 solution 함수를 완성해 주세요. 제한사항 - 배열 arr의 크기 : 1,000,000 이하의 자연수 - 배열 arr의 원소의 크기 : 0보다..
-
[알고리즘] 프로그래머스 level1 - 나머지가 1이 되는 수 찾기(JAVA)알고리즘 2023. 10. 5. 23:13
설명 자연수 n이 매개변수로 주어집니다. n을 x로 나눈 나머지가 1이 되도록 하는 가장 작은 자연수 x를 return 하도록 solution 함수를 완성해주세요. 답이 항상 존재함은 증명될 수 있습니다. 제한사항 - 3 ≤ n ≤ 1,000,000 입출력 예 n result 10 3 12 11 입출력 예 설명 입출력 예#1 - 10을 3으로 나눈 나머지가 1이고, 3보다 작은 자연수 중에서 문제의 조건을 만족하는 수가 없으므로, 3을 return 해야 합니다. 입출력 예#2 - 12를 11로 나눈 나머지가 1이고, 11보다 작은 자연수 중에서 문제의 조건을 만족하는 수가 없으므로, 11을 return 해야 합니다. 답안 class Solution { public int solution(int n) { ..
-
[알고리즘] 프로그래머스 level1 - K번째수(JAVA)알고리즘 2023. 10. 4. 21:30
설명 배열 array의 i번째 숫자부터 j번째 숫자까지 자르고 정렬했을 때, k번째에 있는 수를 구하려 합니다. 예를 들어 array가 [1, 5, 2, 6, 3, 7, 4], i = 2, j = 5, k = 3이라면 1. array의 2번째부터 5번째까지 자르면 [5, 2, 6, 3]입니다. 2. 1에서 나온 배열을 정렬하면 [2, 3, 5, 6]입니다. 3. 2에서 나온 배열의 3번째 숫자는 5입니다. 배열 array, [i, j, k]를 원소로 가진 2차원 배열 commands가 매개변수로 주어질 때, commands의 모든 원소에 대해 앞서 설명한 연산을 적용했을 때 나온 결과를 배열에 담아 return 하도록 solution 함수를 작성해주세요. 제한 사항 - array의 길이는 1 이상 100..
-
[알고리즘] 프로그래머스 level1 - 문자열 내 마음대로 정렬하기(JAVA)알고리즘 2023. 10. 4. 20:47
설명 문자열로 구성된 리스트 strings와, 정수 n이 주어졌을 때, 각 문자열의 인덱스 n번째 글자를 기준으로 오름차순 정렬하려 합니다. 예를 들어 strings가 ["sun", "bed", "car"]이고 n이 1이면 각 단어의 인덱스 1의 문자 "u", "e", "a"로 strings를 정렬합니다. 제한 조건 - strings는 길이 1 이상, 50이하인 배열입니다. - strings의 원소는 소문자 알파벳으로 이루어져 있습니다. - strings의 원소는 길이 1 이상, 100이하인 문자열입니다. - 모든 strings의 원소의 길이는 n보다 큽니다. - 인덱스 1의 문자가 같은 문자열이 여럿 일 경우, 사전순으로 앞선 문자열이 앞쪽에 위치합니다. 입출력 예 strings n return ["s..