본문 바로가기

전체 글176

백준 - 9012번. 스택 괄호 짝맞추기(python) (2022.10.3~) 1. 9012번 1) 문제 2) 풀이 S = int(input()) stack = [] for s in range (S): stack.clear() flag = 0 parseq = input() for i in parsesq: if i == "(": stack.append("(") else: try: stack.pop() except: flag=1 break if len(stack)==0 and flag==0: print("YES") else: print("NO") 3) 문법 및 풀이과정 정말 많은 시행착오를 거치고, 오류도 많이 겪었던 문제였다. 우선 내가 들었던 자료구조 강의의 교수님의 코드대로 함수를 활용해보려 하였으나 계속해서 오류가 발생했다. 이 부분은 아직 원인을 정확히 해결하지 못했다.. (.. 2022. 10. 13.
백준 - 10926번, 18108번 (python) (2022. 10. 3~) 1. 10926번 1) 문제 2) 풀이 3) 문법 공부 및 풀이과정 문자열(string)은 print할 때 +를 이용하면 연결하여 출력된다. 이때 숫자 + '문자열'은 연결되지 않고 오류가 발생하니 주의하여야 한다. 2. 18108번 1) 문제 2) 풀이 3) 문법 공부 및 풀이과정 문제의 예제를 통해 2541-1998=543임을 먼저 계산하였다. 그 후 입력된 값에서 항상 543을 빼면 된다. 이때 input은 string형식으로 입력되므로 int(a)를 꼭 해줘야한다. 혹은 a= input() 대신 a=int(input()) 으로 입력해도 된다. 2022. 10. 13.
자료구조 - 순차적 자료구조 : 스택(Stack)(2022.09.22~10.12) 1. 스택(Stack) LIFO방식(Last In First Out) : 뷔페에서 볼 수 있는 쌓아둔 그릇을 생각하면 이해가 쉽다. 가장 나중에 들어온 데이터가 가장 먼저 나가는 방식이다. 즉 스택의 모든 연산은 스택의 최상단에서 이루어진다. 스택의 연산들에 대해 알아보자. (파이썬) - 삽입연산 : push를 이용해 스택에 값을 삽입한다.(리스트에서는 append를 사용) - 삭제연산 : pop을 이용하며 가장 나중에 들어온 데이터가 삭제된다. pop을 사용할 때는 스택이 비워져 있을 때, 즉 pop할 아이템이 없을 상황을 대비해야 한다. (pop할 아이템이 없으면 indexError가 발생한다.) 이 때는 try & except 를 이용한다. class stack def __init__(self): .. 2022. 10. 12.
백준 문제풀이 - 1000번, 1001번, 1008번, 10998번, 10869번 사칙연산(파이썬, 2022.10.01 기록) 1. 1000번, 1001번, 1008번 1) 1000번 A+B 2) 1001번 A-B 3) 10998번 A*B 4) 1000/1001번/10998번 풀이 2. 10869번 사칙연산 1) 10869번 사칙연산 2) 10869번 풀이 한동안 파이썬 문법에 대해 공부하느라 포스팅을 하지 못했다. 자료구조 강의 중 스택에 대한 복습을 하던 도중, 실제로 강의에서 들은 코드를 구현해봤으나 오류가 발생하는 것을 확인했고, 기본이 아직 턱없이 부족함을 느꼈다. 파이썬 문법 공부를 해서 자료구조에 대한 이해가 더 필요하다고 판단했다. 이제 다시 백준 풀이나 자료구조 정리 글을 다시 꾸준히 올려야겠다 ,, ! 2022. 10. 10.
백준 문제풀이 - Hello World, We love kriii (python)(2022.09.30) 1. Hello World! 출력하기 Print('Hello World!') 2. We love kriii : 아래 내용 출력되도록 하기 강한친구 대한육군 강한친구 대한육군 print('강한친구 대한육군\n'*2) # 문법 살펴보기 1) Print() : () 안의 내용을 출력하는 함수 2) 문자열 내에 \n(줄바꿈)과 같은 기호를 입력하여도 인식이 된다. 3) 문자열에 *n을 하면 n번 출력된다. 이 외에도 '+' 연산자를 활용하면 문자열을 연결해서 출력할 수 있고 ','(콤마)를 활용하여 여러 값을 연속해서 출력할 수 있다. 이 때, 콤마를 사용하면 중간에 공백이 들어간다. 4) 문자열은 ' ' 또는 " " 내에 입력하여 표현할 수 있으며 ''' ''' 내에 입력하면 줄바꿈까지 처리할 수 있다. 2022. 10. 1.
자료구조-순차적 자료구조 : 배열, 리스트(2022.09.21) 1. 배열 1) 가장 기본적인 순차적 자료구조. 2) 인덱스(index) : 배열의 각 특정 위치에 있는 값을 나타내는 상수로 맨 처음 값의 index는 '0'으로 시작하여 1씩 증가. 3) 특징 - 고정된 크기를 갖는 같은 자료형의 원소들이 연속적인 형태로 구성된 자료구조 - 메모리 낭비. 인덱스에 따라 값을 유지해서 중간의 데이터가 삭제되어도 빈자리가 남게 된다. - 배열의 크기가 유동적이지 못하다. 처음 지정한 크기보다 적은 데이터가 들어있어도 배열의 크기에는 변동이 없으며, 반대로 처음에 지정한 크기보다 많은 데이터를 넣거나 삽입하려고 할 경우 에러가 발생한다. => 따라서, 접근을 자주 해야하고 개수가 고정적인 데이터의 경우 배열을 사용하는 것이 적합하다. 4) 연산 - 읽기 & 쓰기 배열에서 .. 2022. 9. 24.
자료구조 - 시간복잡도 , Big-O(2022.09.18) 1. 시간복잡도 알고리즘의 수행시간은 최악의 입력에 대한 기본 연산 횟수로 정의한다. 사실 모든 입력에 대해 기본연산 횟수를 더한 후 평균을 낸 값이 정확한 값이지만 이는 현실적으로 불가능하므로 가장 안 좋은 입력에 대한 기본 연산 횟수를 측정하여 정의한다. 시간복잡도에 대한 예제로 아래 상황을 생각해보자. 1) 최댓값 구하기 algorithm arrayMax(A,n) currentMax = A[0] for i = 1 to n-1 do if CurrentMax < A[i] currentMax = A[i] return currentMax arrayMax의 W.C.I (Worst Case Input)은 어떤 걸까? 가장 최악의 상황은 for구문의 모든 값에 대해 if 구문이 참이어서 currnetMax의 값.. 2022. 9. 19.
네트워크 - 4계층 프로토콜, 포트번호, TCP, UDP, TCP Flag (2022.09.15~16) 1. 4계층 프로토콜 - TCP, UDP 4계층은 전송 계층으로 송신자의 Process와 수신자의 Process를 연결하는 통신 서비스를 제공한다. 전송 계층은 연결 지향 데이터 스트림 지원, 신뢰성, 흐름 제어, 다중화와 같은 서비스를 제공한다. 이때 TCP 프로토콜과 UDP 프로토콜이 있는데 이 둘의 차이점은 아래와 같다. (자세한 내용은 아래 쪽에서 더 자세히 살펴볼 것이다.) - TCP 프로토콜 : 친절, 연결된 후 데이터 전송, 받았는지 확인 후 다음 data 전송, 과정 복잡 - UDP 프로토콜 : 안전한 연결 지향하지 않음, Myway 간단 이 둘의 차이점은 이렇듯 극명하게 나뉘는데 TCP프로토콜이 친절하게 하나 하나 짚어주고 가르쳐준다면 UDP프로토콜은 최소한의 연결만 제공하고 대신 효율을.. 2022. 9. 19.
네트워크 - 3계층 IP주소와 프로토콜(ARP, IPv4, ICMP)(2022.09.14) 1. 3계층 네트워크 계층3계층은 다른 네트워크 대역, 멀리 떨어진 곳에 존재하는 네트워크까지 데이터를 전달할 때 제어하는 역할을 한다.LAN과 LAN을 연결시켜주는 것이 3계층의 역할이다. 2계층이 같은 네트워크 대역 내, 즉 바로 옆에 있는 노드들에게 데이터를 전송하기 위한 것이었다면 3계층은 출발지에서 목적지가 같은 네트워크 대역이 아닐 때 데이터를 전송하기 위한계층인 것이다.3계층의 대표적인 장비는 라우터가 있다. LAN과 LAN을 연결하려면 2계층의 스위치 장비만으로는 서로 다른 네트워크 대역을 나누고 통신할 순 없기 때문에 반드시 라우터가 필요하다.네트워크 계층의 데이터는 패킷(packet)이라고 부른다.   2.  IP주소1) 개념 IP주소는 3계층에서 사용하는 주소들 중 대표적인 주소이다... 2022. 9. 15.
자료구조 - 자료구조와 알고리즘(2022.09.13) 1. 자료구조 1) 자료구조란? data가 있을 때, 이를 저장할 저장공간과 읽기, 쓰기, 삽입, 삭제, 탐색 등 data를 다룰 수 있는 연산이 필요하다. 이 저장공간과 연산을 통틀어 우리는 자료구조라고 부른다. 2) 자료구조의 예 ▶변수(variable) a = 1 print(a) 위 코드에서 첫째줄에는 a에 5가 들어있는 객체의 주소를 입력하는 쓰기 연산이 사용되었으며, print(a)에는 a에 쓰인 data를 읽는 읽기 연산이 사용되었다. 이처럼 변수도 자료구조의 간단한 예 중 하나이다. ▶배열(array) / 리스트(list) A[9,1,-7,2] 위와 같은 배열에서 각 배열의 자리에 각 숫자가 들어있는 주소가 입력되는 쓰기 연산이 사용되었고 이를 출력한다면 읽기 연산이 사용되게 된다. 뿐만 아.. 2022. 9. 13.