Today I Learned

[TIL] 자료구조 / 배열을 이용한 리스트의 구현, 쿠버네티스 APIs and Access 인증서, 백준 11948, 프로그래머스 12910 [21-10-26]

목차

TIL

- 추상 자료형 : 배열을 이용한 리스트의 구현

- 쿠버네티스 APIs and Access 인증서

- 백준 11948

- 프로그래머스 12910


TIL

 오늘 자료구조 배열 부분에서 정말 많은 시간을 썻다. 3~4시간 정도 강의를 듣고 이해하고 정리하는데 사용했고 API 부분에서는 인증서만 다뤄서 비교적 일찍 끝낼 수 있었다.

 

 

 

추상 자료형 : 배열을 이용한 리스트의 구현

https://valuelog.tistory.com/89

 

[Data Structures][03-2] 배열을 이용한 리스트의 구현

본 글은 윤성우의 열혈 자료구조 책을 읽고, 강의를 수강하고 복습한 것을 기록한 글입니다. 강의 교안 또한 참고하여 작성하였습니다. (강의 교안의 경우 오렌지 미디어에서 다운로드할 수 있

valuelog.tistory.com

 오늘 내용이 아무래도 여태까지 배운 내용중에서 가장 길고 어려웠었던 것 같다.

 

 리스트가 순차리스트, 연결리스트로 구분되며 특징으로는 데이터를 나란히 저장하고 데이터의 중복 저장을 허용한다.

직접 기능을 구현하여 배열을 직접 구현해보는 경험은 row level에서 어떻게 리스트 자료구조가 동작되는지 이해를 도울 수 있었다.

 

 포인터를 사용하여 해당 값의 메모리 주소를 참조하고 가리키고 초기화하는 일련의 과정이 자료구조에서 동작하고 있었다. 가령 데이터를 넣고 나서 호출을 하기 위해서 LFirst, LNext 등 여러 ADT 기능들이 사용이 되는 것을 확인할 수 있었다. 뿐만 아니라 데이터를 삭제할 때에 해당 삭제 인덱스에 접근을 하고 배열의 인덱스를 옮기는 과정, 그리고 삭제 이후에는 참조 위치를 하나 감소 시킨다던지, 포인터의 개념이 여기서 활발하게 쓰이는 것을 확인할 수 있었다.

 

 

쿠버네티스 APIs and Access 인증서

https://valuelog.tistory.com/88

 

[Kubernetes] APIs and Access(2)

목차 Kubernetes APIs and Access(2) - 인증서 APIs and Access 인증서 - 쿠버네티스에서는 다양한 인증방법이 있으나, 대부분 PIK(공개 키 인프라) 기반으로 상호 인증 - PKI? 그 전에 대칭키/비대칭키 이론 학습

valuelog.tistory.com

 

 오늘 학습한 내용의 대부분은 인증서에 관련된 것이었다. 학원에서 잠깐 ssh, public key, private key에 대해 살짝 학습했었던 적이있는데, 그 부분이 생각나서 인증서 내용이 이해하기 쉽게 들렸었다. Kubernetes에서는 PIK기반으로 상호 인증을 한다. PIK개념을 이해하기 위해서는 대칭, 비대칭 키에대해 이해할 수 있어야하는데, 물감과 암구호 예시를 통해서 쉽게 이해할 수 있었다. 

 

백준 11948

https://www.acmicpc.net/problem/11948

 

 

11948번: 과목선택

JOI는 물리, 화학, 생물, 지구과학, 역사, 지리 총 6 과목의 시험을 봤다. 각 시험의 만점은 100점이다. JOI는 물리, 화학, 생물, 지구과학 4과목 중에서 3 과목을 선택하고 역사, 지리 2 과목 중에

www.acmicpc.net

 상당히 쉬운 문제였다. 값을 비교하여야 되는데 버블로 비교하면 시간 복잡도가 커질 것을 생각해서 강력한 파이썬 내장함수 sort로 정리한다음 가장 작은 값은 없애주는 방법으로 해결했다. 

 

a = int(input())
b = int(input())
c = int(input())
d = int(input())
e = int(input())
f = int(input())

_list = [a, b, c, d]
_list.sort()
_list.remove(_list[0])

total = 0
for i in range(3):
    total += _list[i]
plus = 0
if e > f:
    plus = e
elif e < f:
    plus = f
else:
    plus = e

total = total + plus
print(total)

 

문제 풀이 5분내외

 

 

프로그래머스 12910

https://programmers.co.kr/learn/courses/30/lessons/12910

 

코딩테스트 연습 - 나누어 떨어지는 숫자 배열

array의 각 element 중 divisor로 나누어 떨어지는 값을 오름차순으로 정렬한 배열을 반환하는 함수, solution을 작성해주세요. divisor로 나누어 떨어지는 element가 하나도 없다면 배열에 -1을 담아 반환하

programmers.co.kr

 이 문제도 생각보다 간단하고 빨리 풀었다. 배열에 넣기 전에 먼저 조건을 확인하고 넣고 배열이 빈 경우에는 예외처리를 해서 -1를 추가해준다. 비어있지 않은 경우에는 sort하여 마지막에 return 해준다.

 

 

# test case
# arr = [5, 9, 7, 10]
# arr = [2, 36, 1, 3]
# arr = [3, 2, 6]


def solution(arr, divisor):
    answer = []
    for i in range(len(arr)):
        if arr[i] % divisor == 0:
            answer.append(arr[i])
    if not answer:
        answer.append(-1)
    else:
        answer.sort()
    return answer

# test execute
# print(solution(arr, 10))

 

문제 풀이 시간 10분 내외