백준 (BOJ) 17298번 https://www.acmicpc.net/problem/17298 사용언어 : PYTHON 1.문제 2.풀이 시간제한이 1초이기 때문에 중첩 반복문으로 풀게되면 시간초과가 나올것 같아서 스택을 사용하여 풀어야겠다고 생각했다. 처음에는 큰 수에 생각이 사로 잡혀서 스택에 가장 큰 값을 유지하면 안될까? 라는 생각을 계속하였다. 1시간 정도 고민해보다 도저히 안될것 같아서 다른분들의 풀이를 검색하였다. 검색을 통해 알게된 아이디어는 다음과 같다. 스택에 수열의 가장 큰 값을 유지하는 것이 아닌, 스택의 제일 윗 값보다 큰 값이 나올때 까지 수열의 값들을 차례대로 쌓는 것이었다. 그러다가 스택의 제일 위의 값보다 큰 수열의 값이 나오면 그 수는 스택 제일 윗 값의 오큰수가 된다...
백준 (BOJ) 1406번 https://www.acmicpc.net/problem/1406 사용언어 : PYTHON 1.문제 2.풀이 시간복잡도를 고려해야하는 문제였다. 처음에는 현재 커서의 위치를 저장하는 cursor변수와, 리스트의 insert, del 메소드를 사용했는데 이렇게 하니 시간초과가 발생했다. 두 메소드의 시간복잡도가 O(n)이고, 이것을 m번 반복하기 때문이었다. 이 시간초과 문제를 해결하기 위해선 시간복잡도가 O(1)인 pop()과 append()연산을 사용해야 했다. 그리고 cusor변수를 두 개의 리스트를 사용해서 구현할 수 있었다. 커서를 기준으로 리스트 st와 tmp_st로 나누었다. 커서를 왼쪽으로 옮기면 st에서 pop()하여 tmp_st에 append(), 커서를 오른쪽..
백준 (BOJ) 18870번 https://www.acmicpc.net/problem/18870 사용언어 : PYTHON 1.문제 수직선 위에 N개의 좌표 X1, X2, ..., XN이 있다. 이 좌표에 좌표 압축을 적용하려고 한다. Xi를 좌표 압축한 결과 X'i의 값은 Xi > Xj를 만족하는 서로 다른 좌표의 개수와 같아야 한다. X1, X2, ..., XN에 좌표 압축을 적용한 결과 X'1, X'2, ..., X'N를 출력해보자. 즉 [2,10,15,1,1] 라는 데이터가 있으면 값의 대소관계만 고려한 데이터로 변환하라는 것이다. (위 예시의 정답 : [1,2,3,0,0]) 2.풀이 각 원소의 중복을 제거하고 정렬 한 다음, 각 값에 0부터 순서를 부여하면 된다. 처음..
1. 프로그램의 구조와 인터럽트 프로그램이 cpu에서 명령을 수행하려면 해당 명령을 담은 프로그램의 주소 영역이 메모리에 올라가 있어야 한다. 프로그램의 주소 영역 : 코드(code), 데이터(data), 스택(stack) 영역으로 구분됨 코드(code) : 작성한 프로그램 함수들의 코드가 cpu에서 수행할 수 있는 기계어 명령 형태로 변환되어 저장되는 부분 데이터(data) : 전역 변수 등 프로그램이 사용하는 데이터를 저장하는 부분 스택(stack) : 함수가 호출될 떄 호출된 함수의 수행을 마치고 복귀할 주소 및 데이터를 임시로 저장하는 데에 사용되는 공간 ex) X라는 함수 수행 중 Y라는 함수를 호출한 상황 프로그램은 X함수에서 Y함수를 호출한 지점을 스택에 저장해놓았다가 Y 함수가 수행된 후 ..
1. 컴퓨터 시스템의 구조 컴퓨터 시스템 구조 = 내부장치(CPU, 메모리) + 외부장치(디스크, 키보드, 마우스, 모니터, 네트워크) 컨트롤러(일종의 작은 CPU) : 메모리 및 입출력장치 등 각 하드웨어 장치에 붙어있으면서 이들을 제어 어떤 프로그램이 수행되려면 그 프로그램은 메모리에 올라가 있어야 한다. 운영체제 중 항상 메모리에 올라가 있는 부분을 커널(전체 운영체제 중 핵심적인 부분) 이라고 한다. 2. CPU연산과 I/O 연산 입출력 장치들의 I/O연산 : 입출력 컨트롤러가 담당 컴퓨터 내에서 수행되는 연산 : 메인 CPU가 담당 👉 입출력 장치와 메인 CPU는 동시에 수행이 가능하다. 로컬버퍼 : 컨트롤러가 장치로부터 들어오고 나가는 데이터를 임시로 저장하기 위해 가지고 있는 작은 메모리 인..
운영체제의 정의 운영체제란 컴퓨터 하드웨어 바로 위에 설치되어 사용자 및 다른 모든 소프트웨어와 하드웨어를 연결해주는 소프트웨어 계층이다. 협의의 운영체제(커널) : 운영체제의 핵심 부분으로 메모리에 상주하는 부분 광의의 운영체제 : 커널 뿐만 아니라 각종 주변 시스템 유틸리티를 포함한 개념 운영체제의 기능 ⭐컴퓨터 시스템의 자원을 효율적 (+ 형평성) 으로 관리⭐ : hw자원(프로세서, 기억장치, 입출력 장치), sw자원(프로세스, 파일, 메시지) 의 주어진 자원으로 최대한의 성능을 내도록 관리 + 사용자 및 프로그램들 간 형평성 있는 자원 분배 컴퓨터 시스템을 편리하게 사용할 수 있는 환경을 제공 : 운영체제는 동시 사용자/프로그램들이 각각 독자적 컴퓨터에서 수행되는 것 같은 환상을 제공 : 하드웨어..
컴퓨터의 선사시대 컴퓨터의 이론적인 기원은 수학과 논리학에 기초한다. 컴퓨터가 존재하지 않던 시대에 이미 컴퓨터에 관한 연구와 높은 수준의 결과가 있었고, 이러한 연구를 토대로 현재 컴퓨터가 만들어지게 되었다. 컴퓨터는 계산을 빠르게 하기 위해서 개발되었으며 기계식 컴퓨터 -> 전자식 컴퓨터 순서로 발전했다. 근대적 컴퓨터의 역사 💻1세대 컴퓨터 1세대 컴퓨터는 진공관 기반의 컴퓨터로서, 건물 하나의 공간을 가득 차지할 만큼 부피가 크고 가격이 비쌌다. 이러한 이유로 기상청이나 은행, 정부기관 등 큰 공공기관에서만 컴퓨터를 사용할 수 있었다. 💻2세대 컴퓨터 미국의 벨(Bell) 연구소에서 트랜지스터를 발명하였고, 이런 트랜지스터를 활용해 컴퓨터(2세대 컴퓨터)를 개발하게 되었다. 2세대 컴퓨터는 1세대..
여행객들을 위한 웹서비스 시연영상 제작동기 프로젝트 이름과 같이 For your travel (당신의 여행을 위한) 웹 서비스를 제작하고자 하였습니다. 여행객들이 저희 서비스를 통해 관광지 정보와 다른 사용자들의 여행후기를 참고하여 성공적인 여행계획을 완성하는데 도움을 받을 수 있습니다. 사용기술 Vue.js vuex vuex-persistedstate axios vue-router vue-wordcloud jwt-decode SpringBoot myBatis jjwt spring-boot-starter-mail MySql 구현기능 사용자 프로필 팔로우, 팔로잉 로그인, 로그아웃, 회원가입 (jwt) 게시판 CRUD, 댓글 CRUD 회원정보 수정 1. 로그인, 로그아웃, 회원가입 (jwt, vuex, v..