목록분류 전체보기 (175)
가자미의 개발이야기
a. 큐 Queue 가장 최근에 저장된 값 다음에 저장. 반환은 가장 먼저 저장된 값부터. FIFO(First in First out)원칙. enqueue 큐의 오른쪽에 삽입(push와 같음) dequeue 가장 왼쪽에 저장된 값을 삭제 후 리턴 front 가장 왼쪽에 저장된 값을 삭제하지 않고 리턴 isEmpty 큐가 비어져있는지 참거짓 len 큐의 요소 갯수 반환 class Queue: def __init__(self): self.items=[] self.front_index=0 #다음 dequeue될 값의 인덱스 def enqueue(self, val): self.items.append(val) def dequeue(self): if len(self.items)==0 or self.front_ind..
a. 스택 Stack 차례대로 삽입하고 최근에 저장된 값을 삭제(FILO) push 스택에 값 추가 pop 가장 나중에 push된 값을 스택에서 제거하고 반환 top 가장 나중에 push된 값을 제거하지 않고 반환 __len__ 스택의 저장된 요소 갯수를 반환 isEmpty 스택에 요소가 존재하는지 참거짓 # stack_queue.py 에 저장 class Stack: def __init__(self): self.items = []# 데이터 저장을 위한 리스트 준비 def push(self, val): self.items.append(val) def pop(self): try:# pop할 아이템이 없으면 return self.items.pop() except IndexError:# indexError 발생..
a. 배열(array) 데이터를 연속적인 메모리 공간에 저장 주소를 통해 매우 빠르게 접근 배열의 시작 주소, 저장된 값의 종류, 인덱스 세가지 정보로 원하는 값의 주소를 계산 가능. 읽기와 쓰기 연산에 O(1)시간이 걸림 고정된 길이를 가지며, 읽기와 쓰기만 지원하는 경우가 많다. b. 리스트 (파이썬) c의 배열에는 실제 데이터가 저장된 형식이지만, python의 리스트에는 데이터가 저장된 주소가 저장된다. 항상 객체의 주소만 저장하기 때문에 셀의 크기를 8바이트(혹은 4바이트)로 고정. 모든 셀의 크기가 같기 때문에 index에 의해 O(1)시간 접근이 가능 읽기/쓰기 외에 여러 연산들 지원 a.append(val) 맨 뒤에 val 삽입 a.pop(i) a[i]값을 지운 후 리턴 pop()은 가장 ..
Comparable : 기본 정렬기준을 구현하는데 사용 Comparator : 기본 정렬기준 외에 다른 기준으로 정렬하고자 할 때 사용 public interface Comparator { int compare(Object o1, Object o2); //o1과 o2를 비교 boolean equals(Object obj); } public interface Comparable { int compareTo(Object o); //객체 자신(this)와 o를 비교 } Comparable을 구현한 클래스는 정렬이 가능하다. Comparable은 어떤 클래스의 인스턴스들이 서로 비교 가능함을 의미 Comparator는 임의의 오브젝트들의 비교 기준을 구현.
Iterator : 컬렉션에 저장된 요소를 접근하는데 사용되는 인터페이스 ListIterator : Iterator에 양방향 조회기능추가(List를 구현한 경우에만 사용가능) List list = new ArrayList(); Iterator it = list.iterator(); while(it.hasNext()){ System.out.println(it.next()); } Map의 경우 Iterator가 구현되어 있지 않아 keySet()이나 entrySet()을 통해 Set형태로 가져온 뒤 Iterator를 실행해야함 Map map = new HashMap(); .... Iterator it = map.entrySet().iterator();
문제 링크 https://programmers.co.kr/learn/courses/30/lessons/12903 코딩테스트 연습 - 가운데 글자 가져오기 단어 s의 가운데 글자를 반환하는 함수, solution을 만들어 보세요. 단어의 길이가 짝수라면 가운데 두글자를 반환하면 됩니다. 재한사항 s는 길이가 1 이상, 100이하인 스트링입니다. 입출력 예 s ret programmers.co.kr 내 풀이 길이 홀짝 여부에 따라 문자열을 substring메소드로 자르거나, charat메소드로 string객체를 만든다. class Solution { public String solution(String s) { int len = s.length(); String answer=""; if(len%2==0){ ..
문제 링크 https://programmers.co.kr/learn/courses/30/lessons/12901 코딩테스트 연습 - 2016년 2016년 1월 1일은 금요일입니다. 2016년 a월 b일은 무슨 요일일까요? 두 수 a ,b를 입력받아 2016년 a월 b일이 무슨 요일인지 리턴하는 함수, solution을 완성하세요. 요일의 이름은 일요일부터 토요일까 programmers.co.kr 내 풀이 주어진 월을 고려하여 지난 달의 일 수를 switch문으로 일자에 더한다. 더해진 일자를 요일에 따라 7로 나누어 요일을 반환 class Solution { public String solution(int a, int b) { while(a!=1){ switch(a){ case 2: b+=31; brea..
문제 링크 https://programmers.co.kr/learn/courses/30/lessons/68644 코딩테스트 연습 - 두 개 뽑아서 더하기 정수 배열 numbers가 주어집니다. numbers에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 배열에 오름차순으로 담아 return 하도록 solution 함수를 완성해주세요. 제한 programmers.co.kr 내 풀이 한 배열 안에서 두 개의 정수의 합을 구하는 과정을 두 반복문으로 구현 결과 값에 중복이 존재할 수 있으므로, contains 메소드로 검사. 결과 배열의 원소 갯수가 가변적이므로 배열 대신 arraylist를 사용 후 배열로 다시 만듬. 정렬은 Collections 클래스의 sort메소드 활용..
문제 링크 https://programmers.co.kr/learn/courses/30/lessons/77484 코딩테스트 연습 - 로또의 최고 순위와 최저 순위 로또 6/45(이하 '로또'로 표기)는 1부터 45까지의 숫자 중 6개를 찍어서 맞히는 대표적인 복권입니다. 아래는 로또의 순위를 정하는 방식입니다. 1 순위 당첨 내용 1 6개 번호가 모두 일치 2 5개 번호 programmers.co.kr 주요 아이디어 반복문 두 개를 사용해 두 배열의 원소를 비교. 모르는 숫자가 다맞은 경우와 다 틀린 경우를 각 변수에 저장 class Solution { public int[] solution(int[] lottos, int[] win_nums) { int bestRate = 7; int worstRate..
a. 링크 a-1. 링크 계층 소개 링크 계층(2계층) 프로토콜을 실행하는 장치를 노드라 함. 통신 경로상의 인접한 노드들을 연결하는 통신 채널은 링크 한 링크에서 전송 노드는 데이터그램을 링크 계층 프레임으로 캡슐화해서 링크로 전송한다. a-2. 링크 계층의 서비스 프레임화 : 네트워크 계층 데이터그램을 링크상으로 전송하기 전에 링크 계층 프래임에 캡슐화. header payload trailer 형식으로 캡슐화 링크 접속 : 매체 접속 제어(MAC) 프로토콜은 링크상으로 프레임을 전송하는 규칙에 대해서 명시함 신뢰적 전달(RDT) : 링크 계층의 신뢰적 전달 서비스도 확인 응답과 재전송 방식으로 가능 트랜스포트 계층이나 애플리케이션 계층과 달리 데이터를 재전송하는 방식과 달리 링크 계층 프로토콜은 오..