문제 https://school.programmers.co.kr/learn/courses/30/lessons/142086 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 나의 풀이 import java.util.HashMap; class Solution { public int[] solution(String s) { int sLen = s.length(); int[] answer = new int[sLen]; HashMap map = new HashMap(); for (int i = 0; i < sLen; i++) { char c = s.charAt(i);..
분류 전체보기
>>>>>>> 소스코드.git 자료구조가 연결되었다 함은 노드(node)라는 객체들이 다른 노드에 대한 참조를 포함한 형태로 저장된 것을 의미한다. 연결 리스트에서 각 노드는 리스트의 다음 노드에 대한 참조를 포함한다. 연결 구조의 다른 예로는 트리와 그래프가 있다. 이때 노드는 둘 이상의 다른 노드에 대한 참조를 포함한다. 다음은 간단한 노드에 대한 클래스의 정의이다. (ListNode.java) public class ListNode { public Object cargo; public ListNode next; public ListNode() { this.cargo = null; this.next = null; } public ListNode(Object cargo) { this.cargo = ca..
>>>>>>> 소스코드.git 다음은 인덱스와 요소를 인자로 받는 add 메서드이다. (MyArrayList.java) public void add(int index, T element) { if (index size) { throw new IndexOutOfBoundsException(); } // 크기 조정을 통해 요소를 추가합니다. add(element); // 다른 요소를 시프트합니다. for (int i = size - 1; i > index; i--) { array[i] = array[i - 1]; } // 올바른 자리에 새로운 값을 넣습니다. array[index] = element; } 두 인자 버전 메서드인 add(int, T)는 단일 인자 버전 메서드인 add..
>>>>>>> 소스코드.git MyArrayList 메서드 분류하기 다음은 MyArrayList 클래스의 get 메서드이다. (MyArrayList.java) public T get(int index) { if (index = size) { throw new IndexOutOfBoundsException(); } return array[index]; } get 메서드에 있는 모든 것은 상수 시간이다. 따라서 get 메서드는 상수 시간이다. 아무 문제 없다. set 메서드도 구현해보자. public T set(int index, T element) { T old = get(index); array[index] = element; return old; } 이 해법에서 약간 똑똑한 부..
>>>>>>> 소스코드.git 삽입정렬이란? - 자료 배열의 모든 요소를 앞에서부터 차례대로 이미 정렬된 배열 부분과 비교하여, 자신의 위치를 찾아 삽입함으로써 정렬을 완성하는 알고리즘이다. 동작 방식 3 5 1 4 2 처음 상태. 3 [5] 1 4 2 두 번째 원소(5)를 부분 리스트에서 적절한 위치에 삽입한다. 3 [1] 4 2 세 번째 원소(1)를 부분 리스트에서 적절한 위치에 삽입한다. 3 5 [4] 2 네 번째 원소(4)를 부분 리스트에서 적절한 위치에 삽입한다. 1 3 5 [2] 마지막 원소(2)를 부분 리스트에서 적절한 위치에 삽입한다. 1 3 4 5 종료. 소스코드(java) - SortClass 클래스는 정렬 알고리즘을 담는 컨테이너이다. (앞으로 정렬은 이 클래스 내에 작성할 예정) -..
>>>>>>> 소스코드.git 선택 정렬이란? 제자리 정렬 알고리즘의 하나로, 다음과 같은 순서로 이루어진다. 주어진 리스트 중에 최소값을 찾는다. 그 값을 맨 앞에 위치한 값과 교체한다. 맨 처음 위치를 뺀 나머지 리스트를 같은 방법으로 교체한다. 비교하는 것이 상수 시간에 이루어진다는 가정 아래, n개의 주어진 리스트를 이와 같은 방법으로 정렬하는 데에는 O(n²) 만큼의 시간이 걸린다. 선택 정렬은 알고리즘이 단순하며 사용할 수 있는 메모리가 제한적인 경우에 사용시 성능 상의 이점이 있다. 소스 코드(java) (SelectionSort.java) import java.util.Arrays; public class SelectionSort { /** * i와 j의 위치에 있는 값을 바꾼다. */ p..