프로그래머스 33

[CNU SW Academy] 코딩테스트 가이드

문제를 풀 때 중요한 것 1. 여러 풀이 방법이 있다는 것을 기억하자. 2. 예외가 있을 수 있다는 것을 기억하자. 3. 내가 푼 답이 베스트인지 의심하자. 4. 문제를 풀었다면 시행착오를 모두 기록하자.(오답노트) 5. 다른 사람의 코드를 많이 보자. 6. 쉽게 포기하지 말자.(3시간 이상 붙잡고 풀어보기) => 도저히 모르겠다면 답을 보는 것도 좋은 방법 알고리즘 마스터가 될 필요는 없다. 회사는 업무 수행의 기초 능력을 확인하고 싶은 것 대부분의 코딩 테스트는 대회용 알고리즘을 출제하지 않는다. => 문제 해결 능력을 기르는 것이 더 중요하다. 어디까지 공부할지 정하자. 성향 파악하기 1. 미리 생각하고 의사 코드를 작성해야 더 잘 풀리는 사람 2. 일단 코드를 작성하면서 생각해야 더 잘 풀리는 사..

SW Academy 2022.12.23

[CNU SW Academy] 15일차(22.12.21)

운영체제 - 김종익교수님 프로세스 실행 중인 프로그램 - text section : 코드가 있는 부분 - Stack : temporary data를 담고 있다. 함수 파라미터, return주소, 지역변수 - Data section : 프로그램의 시작부터 끝까지 유지되는 전역변수 - 초기화 된 데이터 - 초기화 되지 않은 데이터 - Heap : 실행 중에 동적으로 메모리 할당(new, malloc) Program Counter 다음 수행할 프로그램 코드의 위치를 가리키는 register value 현재 작업하고 있는 정보들은 CPU register에 다 들어있다. 프로세스의 상태 1. new 2. running 3. waiting 4. ready 5. terminated PCB(Process Control..

SW Academy 2022.12.23

[CNU SW Academy] 14일차(22.12.20)

김종익교수님 - OS 사용자와 컴퓨터 HW 중간에 끼어 있는 프로그램 사용자가 만든 프로그램을 실행시켜주고, 어떤 문제를 프로그램을 통해 해결하는 것을 좀 더 쉽게 해 주고, HW를 효율적으로 사용할 수 있게 해 줌 kernal 컴퓨터가 실행되면 계속해서 실행되는 부분 운영체제의 가장 핵심 파트 interrupt 실행되던 정보를 어딘가에 저장하고, 처리하고 돌아왔을 때 다시 실행할 수 있도록 해야 한다. Interrupt Handling 현재 CPU의 상태들을 저장 interrupt vector가 존재 Storage Structure - main memory CPU가 직접 접근 가능한 유일한 휘발성 메모리 - secondary storage 비휘발성 메모리 - hard disks : track, sect..

SW Academy 2022.12.23

[CNU SW Academy] 13일차(22.12.19)

유찬희 TA - Git 실습(2) Branch를 사용하는 이유 1. main 브랜치를 완전하게 돌아가는 코드로 유지하기 위해 2. 불필요한 충돌을 막기 위해 3. 원활한 코드 리뷰 진행을 위해 branch : 복사본을 만드는 것 각자 branch를 만들어 그 위에 commit, 자신의 코드를 올린다. pull request & merge를 통해 합쳐주는 과정을 거침 C가 또 PUSH를 하고 pullrequest & merge를 하면 필요한, 겹치지 않는 부분만 추가된다. 커밋의 구조 commit hash : 커밋의 고유한 번호, 남긴 커밋 메시지, 변경사항이 같더라도 해시는 다르다. (누가 변경했는지, 날짜 등도 초단위로 기록됨) HEAD 현재 내가 존재하는 커밋의 위치 기록은 남기고 싶은데 이전 기록을..

SW Academy 2022.12.22

[CNU SW Academy] 12일차(22.12.16)

활동 내용을 블로그에 기록하지 못해 이제서야 올린다. 과제와 수업 때문에 비대면으로 진행하였다. 팀프로젝트 프로토타입 제작 제작한 프로토타입의 일부분이다. 자세한 프로토타입 결과는 보고서에 링크가 첨부되어있다. 김종익교수님 DB Key에는 superkey, candidate key, primary key, foreign key가 존재한다. DB 연산에 대해 알아보았다. select, project, union, set difference, cartesian product, rename 연산 등이 있다. selection은 조건에 해당하는 튜플을 찾는 연산이다. 같다. 다르다. 크다. 크거나 같다. 작다. 작거나 같다 등의 연산과 and, or, not의 연산도 가능하다. projection은 나열된 열만..

SW Academy 2022.12.18

[CNU SW Academy] 8일차(22.12.12.)

프로그래머스 - 프론트엔드 미니 데브코스 입국심사문제 입국심사를 기다리는 사람 수 n, 각 심사관이 한 명을 심사하는데 걸리는 시간이 담긴 배열 times가 매개변수로 주어진다. def solution(n, times): left = min(times) right = max(times) * n answer = 0 while left = n: break if people >= n: answer = mid right = mid -1 else: left = mid + 1 return answer 이분탐색을 이용하는 문제이다. 최소 시간은 n이 1일 때 min(times)이고, 최대 시간은 max(times) * n이다. 따라서 이분 탐색에서 left를 min(times), right를 max(times) * ..

SW Academy 2022.12.12

[CNU SW Academy] 7일차(22.12.09.)

프로그래머스 - 프론트엔드 미니 데브코스 그래프(Graph) 정점과 정점 사이를 연결하는 간선으로 이루어진 비선형자료구조 Node, Edge 그래프의 특징 - 정점은 여러 개의 간선을 가질 수 있다. - 방향 그래프와 무방향 그래프로 나눌 수 있다. - 간선은 가중치를 가질 수 있다. - 사이클이 발생할 수 있다. 무방향 그래프 (A, B)와 (B, A)는 같은 간선으로 취급된다. 방향그래프 와 는 다른 간선으로 취급된다. 연결 그래프 모든 정점이 서로 이동가능한 상태인 그래프 비연결 그래프 특정 정점쌍 사이에 간선이 존재하지 않는 그래프 완전그래프 모든 정점끼리 연결된 상태인 그래프 그래프의 구현 방법 1. 인접 행렬 2. 인접 리스트 트리(Tree) 방향그래프의 일종으로 정점을 가리키는 간선이 하나밖..

SW Academy 2022.12.09

[CNU SW Academy] 6일차(22.12.08.)

프로그래머스 - 프론트엔드 미니 데브코스 스택(Stack) LIFO(Last In First Out), 바닥이 막힌 상자 push, pop, top 1. Array로 표현하기 2. LinkedList로 표현하기 JS에서 사용법 배열 - push, pop명령어 원래 지원 LinkedList - head를 top으로 지정 올바른 괄호 문제 function solution(s) { const stack = []; for (const c of s) { if (c === '(') { stack.push(c); } else { if (stack.length === 0) { return false; } stack.pop(); } } return stack.length === 0; } 큐(Queue) FIFO(Firs..

SW Academy 2022.12.08

[CNU SW Academy] 5일차(22.12.07.)

프로그래머스 - 프론트엔드 미니 데브코스 DOM(Document Object Model, 문서 객체 모델) tree 구조로 이루어짐 - 문서 노드 : document - 요소 노드 : HTML 태그 자 - 속성노드 : 태그에 정의되어 있는 속성 - 텍스트 노드 : 요소의 텍스트, 자식을 가질 수 없는 단말노드 DOM TREE 순회는 PreOrder로 이루어짐 DOM TREE의 렌더링 브라우저가 HTML을읽고 파싱하여 DOM TREE 구성 -> Stylesheet를 파싱하여 Style Rules 구성 -> Attachment : DOM TREE에 STYLE RULES를 적용하는과정 -> Render Tree 구성 -> display DOM 선택 - getElementById - getElementsByCl..

SW Academy 2022.12.07

[CNU SW Academy] 4일차(22.12.06.)

객체지향 프로그래밍 특강 - 이성호교수님 프로그램은 일종의 명령서 사람이 명령서를 작성하는 과정이 프로그래밍이다. 사람은 자연어를 사용, 컴퓨터는 기계어를 사용 -> 사람이 컴퓨터의 언어로 명령한다. 번역 고수준 언어로 작성된 프로그램이 기계어 프로그램으로 번역 기계어로 번역된 프로그램을 목적코드라고 한다. 컴파일러 : 프로그램을 번역하는 프로그램 인터프리터 : 해석을 수행하는 주체, 프로그램을 컴퓨터 대신 해석하는 프로그램 프로그래밍은 구문구조와 의미로 구성 명령형 언어 : 프로그램의 상태를 변화시키는 서술을 순차적으로 수행하여 명령을 수행 절차지형 언어 : 서술의 연속으로 구성되는 절차를 정의하고 이를 통해 명령을 수행 함수형 언어 : 입력과 출력의 매핑인 함수의 조합과 적용으로 프로그램을 구성 객체..

SW Academy 2022.12.06