본문 바로가기

[내일배움캠프]스파르타코딩클럽 AI 웹개발/Today I Learned

(73)
[내일배움캠프 25일차 TIL] 소프트웨어 설계 오늘 TIL 정리는 아래 링크에서!  소프트웨어 설계     블로그에 바로 써서 정리하다보니 생각보다 내용이 많아져서 노션에서 정리했다...강의에서 다룬 내용을 조금 더 자세히 정리하다보니 생각보다 많았다..!자료구조에 대한 내용도 적고 싶었는데 그러면 오늘 안에 끝내지 못할 것 같아 자료구조 내용을 뺐다,,ㅠㅠ자료구조 일부는 블로그에 따로 정리해 둔 것이 있으니 다루지 않았던 자료구조도 하나씩 정리해나가야 할 것 같다!
[내일배움캠프 24일차 TIL] 컴퓨터 구조와 운영체제 컴퓨터의 구성요소는 크게 기계적 요소인 하드웨어(Hardware)와 프로그램 요소인 소프트웨어(Software)로 나눌 수 있다 하드웨어 더보기메인보드와 시스템버스메인보드는 핵심 부품들이 정보를 주고받기 위해 연결시킨 판시스템버스는 핵심 부품들이 정보를 주고받는 통로이다주소 버스 : 주소를 주고 받는 통로데이터 버스 : 명령어와 데이터를 주고 받는 통로제어 버스 : 제어 신호를 주고받는 통로컴퓨터의 기계적 요소인 하드웨어에는 네 가지의 핵심 부품이 있다CPU(Central Processing Unit : 중앙처리장치)메모리에 저장된 명령어를 읽어들이고, 해석하고 실행한다CPU의 내부 장치 -> ALU, 레지스터, 제어장치ALU : 산술 논리 저장장치레지스터 : CPU 내부의 작은 임시 저장장치- 중앙처리..
[내일배움캠프 23일차 TIL] 백준 10989번 수 정렬하기 3, 16951번 미로 탐색 with python 백준 10989번 수 정렬하기 다들 생각하듯이 처음엔 sort()함수 사용했다가 메모리 초과가 떴다...이 문제를 풀기 위해서는 계수 정렬(Counting Sort)을 사용하는 방법이 있다계수정렬은 정렬 알고리즘 중 하나로, 특정 범위 내의 정수를 정렬할 때 매우 효과적인 알고리즘이다.주로 정수로 이루어진 배열을 정렬하는 경우에 사용된다 계수정렬은 다음과 같은 순서로 진행된다정렬하려는 배열의 최댓값을 기준으로 한 카운트 배열을 생성- 배열의 크기는 정렬하려는 배열의 최댓값+1이 된다카운트 배열을 사용하여 각 요소의 등장 횟수를 카운트하고 누적합을 구한다원래 배열을 순회하면서 각 요소를 카운트 배열을 참조하여 정렬된 위치에 배치한다 이러한 로직을 이용해서 코드를 작성하면 다음과 같다import sysN =..
[내일배움캠프 22일차 TIL] 백준 23885 비숍 투어 with python 백준 23885번 비숍 투어 문제는 다음과 같다 비숍은 대각선 방향으로만 움직일 수 있는데출발점과 도착점이 주어졌을 때 비숍이 출발점에서 도착점에 갈 수 있다면 "YES"를 출력하고갈 수 없다면 "NO"를 출력하는 문제이다  처음 이 문제를 마주했을때는 냅다 깊이 우선 탐색을 이용해서 풀었는데문제 조건에 체스판의 크기가 최대 10^9의 제곱이기 때문에실제로 제출했을 때 메모리 초과라는 결과를 받았다.... 그래서 열심히 체스판을 그려가며 알아낸 결과 색칠이 된 부분끼리 이동할 수 있고 색칠이 안 된 부분끼리 이동할 수 있다그래서 처음엔 거리를 계산해봤는데 별다른 규칙을 찾지 못했고 그 다음으로 시도한 방법이 좌표를 비교하는 방법이었다 그 결과 출발 위치와 도착위치의 x좌표와 y좌표의 값의 차이가모두 짝수..
[내일배움캠프 21일차 TIL] 백준 1012 유기농 배추 with python 오늘은 백준의 1012번 유기농 배추 문제이다문제는 다음과 같다 서로 인접해있는 배추가 몇 군데 퍼져있는가를 출력하는 문제이다이 문제 역시 탐색 문제로 bfs또는 dfs를 이용해서 풀 수 있다 BFS를 이용한 풀이-> 시간초과처음엔 bfs를 이용해서 문제를 풀었다. 먼저 bfs 함수를 다음과 같이 정의해주고 (함수 이름 소문자로 했어야 했는데)def BFS(field, que): while que: # 큐에 남은 좌표가 없을 때까지 now = que.popleft() # 먼저 들어온 것 부터 now_y, now_x = now[0], now[1] # y좌표, x좌표 field[now_y][now_x] = 0 # 현재 좌표를 0으로 바꾸기 for d i..
[내일배움캠프 20일차 TIL] 백준 2606 바이러스 with python - bfs/dfs 더보기어제 트리의 부모찾기 문제를 꽤나 고생하며 풀어서 그런지 오늘 문제는 비교적 쉽게 풀었다트리의 부모 찾기 문제보다 조금 더 정석적이고 쉬운 bfs/dfs라 그랬을지도...?오늘은 두 가지 방법으로 문제를 풀어보려고 한다!왜냐면 튜터님이 그러라고 했으니까... 백준 2606번 바이러스 문제는 다음과 같다 어제 문제와는 달리 비연결 그래프라는 것!그리고 부모 노드를 출력하는 것이 아닌 1번 노드에서부터 연결된 노드들을 출력하는 것이다조금 더 정석적인 깊이/넓이우선탐색 문제인 것이다어제는 재귀로 깊이우선탐색을 풀었으니 오늘은 스택을 이용해서 깊이우선탐색을그리고 큐를 이용해서 넓이우선탐색을 구현하고자 한다    스택을 이용한 깊이 우선 탐색(DFS : Depth First Search)문제에 나와있는 예시..
[내일배움캠프 19일차 TIL] 백준 11725 트리의 부모 찾기 with python 백준 11725번 트리의 부모 찾기 문제는 다음과 같다 문제는 간단해보이지만 이해하는데 시간이 좀 걸렸다잠깐 문제에 대한 이해를 해보자면  첫 번째 입출력이 위와 같을 때 예제 입력에 대한 트리의 모양은 다음과 같다이때2번 노드의 부모는 43번 노드의 부모는 64번 노드의 부모는 15번 노드의 부모는 36번 노드의 부모는 17번 노드의 부모는 4이므로 출력은 4 6 1 3 1 4가 되는 것이다.  1차 시도처음 이 문제를 받고 든 생각은 트리를 만드는데 상위 노드만 저장되도록 만들면 되는 것 아닌가? 하는 생각이었다 {1 : True,2 : 4 ,3 : 6 ,4 : 1 ,5 : 3 ,6 : 1,7 : 4} 이렇게 만들어서 for 문으로 tree[i]를 출력하자! 였다 생각한대로 코드를 짜고 트리가 생각한..
[내일배움캠프 18일차 TIL] 백준 1927번 최소힙 더보기최소힙 문제 모듈 사용 안하고 풀려니까 너무 어렵다.......라이브러리가 존재함에 다시 한 번 감사하게 된다😂 어제부터 끙끙 앓으면서 풀던 최소 힙물론 파이썬은 heapq라는 모듈 통해 힙을 쉽게 구현할 수 있지만현재 나는 자료구조를 이해하고 어떻게 동작하는지 알아야 하기 때문에 직접 구현해보기로 했다물론 스쿼드 숙제에서 직접 구현해서 풀어보고 heapq를 사용해서 풀어보라고 했다  힙은 완전이진트리의 형태를 가지며 부모노드와 자식노드간에 대소관계가 있다. 내가 구현할 최소힙은 부모노드  내가 만들 힙에는 데이터를 삽입하는 메소드와, 데이터를 추출하는 메소드를 만들어야 한다기본적인 틀은 다음과 같다class MyHeap: def __init__(self): pass d..