분류 전체보기 193

📑 Do it! 코딩테스트-기초편. 3_자료구조2

오늘은 자료구조 편 문제 풀이 2번째 시간이다. https://www.acmicpc.net/problem/1546 1546번: 평균 첫째 줄에 시험 본 과목의 개수 N이 주어진다. 이 값은 1000보다 작거나 같다. 둘째 줄에 세준이의 현재 성적이 주어진다. 이 값은 100보다 작거나 같은 음이 아닌 정수이고, 적어도 하나의 값은 0보 www.acmicpc.net 문제를 읽어보고 시간 복잡도 -> 분석 -> 텍스트 코딩 -> 실제 코딩 순서로 진행해 보자 1. 시간 복잡도 해당 문제의 시간 제한은 2초이기 때문에 2억 번의 연산 안에 마무리하면 된다. 문제에서 제시되는 데이터의 크기가 1000개 이하이기 때문에 일반적인 연산을 통해서도 시간제한 나오기는 쉽지 않을 것이다. 2. 분석 최고점을 구한 후에 ..

📑 nomadcoders_바닐라JS로 크롬앱 만들기_day5

2023-03-17 #7 TO-DO-LIST 우리는 추가와 삭제가 가능한 멋진 todo-list를 위해 기본적인 설정을 화면에 구현했다. 이 내용은 이전 게시글에서 이미 기록한 개념이기 때문에 생략하고 마지막에 전체 소스코드를 보여주려고 한다. 하지만 새로고침을 하거나 이용자가 누구인가와 관계없이 똑같은 todo-list가 나온다면 우리는 todo-list를 그 때마다 계속해서 작성해야할 것이다. 만약 todo-list를 1,000개 작성했는데 단숨에 날라간다면...? 그건 어딘가 부족한 todo-list 일 거다. 그래서 우린 todo-list에 나타낸 텍스트를 저장하는 기능과 로딩하는 기능, 이미 달성한 일은 제거하도록 삭제하는 기능을 추가로 구현해야 한다. 1. todo - list의 배열 생성 1..

📑 nomadcoders_바닐라JS로 크롬앱 만들기_day4

2023-03-16 #5.0 Interval setInterval({function}, {time}) 함수를 사용하여 특정 주기마다 함수를 실행할 수 있다. 이때 주기에 해당하는 time argument는 ms(1s === 1000ms)단위라는 점에 유의하자. const clock = document.querySelector("#clock"); function sayHello(){ console.log("hello"); } //interval -> 매 2초 등 간격을 의미 setInterval(sayHello, 5000); #5.1 Timeouts and Dates setTimeout({function}, {time}) 함수를 사용하여 특정 시간이 지난 후에 단 한 번만 함수를 호출할 수 있다. http..

📑 nomadcoders_바닐라JS로 크롬앱 만들기_day3

const loginForm = document.querySelector("#login-form"); const loginInput = loginForm.querySelector("input"); const loginButton = loginForm.querySelector("button"); function onLogInBtnClick(){ console.log(loginInput.value); } loginButton.addEventListener("click", onLogInBtnClick) 2023.03.14 #4.0 Input Values 모든 것은 HTML에서 시작되어야 한다. HTML에서 태그를 작성하고 자바스크립트로 기능을 구현한다. 먼저, HTML 코드 작성하기 1. 사용자가 이름을 작성..

📑 Do it! 코딩테스트-기초편. 3_자료구조

자료구조란? 자료구조는 데이터를 효율적으로 저ㅗ장, 접근, 수정하기 위한 그릇입니다. 코딩 테스트에서는 각 문제에 주어진 입력 데이터의 형태와 사용해야 하는 알고리즘에 따라 적절한 자료구조를 선정해 사용하는 것이 매우 중요하다. 3-1 배열과 리스트 기본 자료구조인 배열과 리스트는 비슷한 점도 많지만 다른 점도 많다. 두 자료구조의 특징을 정확하게 이해하고 문제가 요구하는 조건에 따라 적절하게 선택해 사용하는 것이 중요하다. 배열 배열은 메모리의 연속 공간에 값이 채워져 있는 형태의 자료구조이다. 배열의 값은 인덱스를 통해 참조할 수 있으며, 선언한 자료형의 값만 저장할 수 있다. 다음 그림은 배열을 나타낸 것이다. 그림을 보면 배열에 값1, 값2, ... 값6이 채워져 있고, 각 값은 0부터 5까지 인..

📑 [PL/SQL] 프로시저

1. 프로시저(Procedure)란? 데이버테이스에 대한 일련의 작업을 정리한 절차를 관계형 데이터베이스 관리시스템에 저장한 것으로 영구 저장 모듈(Persistens Storage Module)이라고도 불린다. 테이블에서 데이터를 추출해 조작하고 그 결과를 다른 테이블에 다시 저장하거나 갱신하는 일련의 처리를 할 때 주로 프로시저를 사용한다. 보통 저장 프로시저를 프로시저라고 부르며, 일련의 쿼리를 마치 하나의 함수처럼 실행하기 위한 쿼리의 집합이다. 즉, 특정 작업을 위한 쿼리들의 블록이다. 2. 장점 하나의 요청으로 여러 SQL문을 실행시킬 수 있다.(네트워크 부하를 줄일 수 있다.) 네트워크 소요시간을 감소시켜 성능이 개선된다. 여러 어플리케이션과 공유가 가능하다.(API처럼 제공가능) 기능 변경..

📑 nomadcoders_바닐라JS로 크롬앱 만들기_day2

- 2023.03.07 -> CSS in JavaScript 자바스크립트와 상호작용하기 위한 총 3가지의 스텝이 있다고 한다. Element 찾기 event를 listen하기 event에 반응(react)하기 이전 글에서 간단한 개념과 함께 1번과 2번을 정리했다. 오늘부터는 3번에 대해서 천천히 정리해보고자 한다. 간단하게 title을 눌렀을 때, title의 색상을 바꾸는 것이다. index.html Grab me 1! app.js const h1 = document.querySelector("div.hello:first-child h1"); function handleTitleClick(){ if(h1.style.color === 'blue'){ h1.style.color = "tomato"; }e..

📑 알고리즘 선택의 기준_시간복잡도

취업 준비기간에 알고리즘 학습용 책을 구매했었는데, 문제풀이 참고용으로만 사용하여 "진짜" 학습을 하지는 못한 것 같아서 다시 천천히 공부해보려 한다. 목표는 매일 한 챕터씩 학습하고 정리하는 것이다. 취업 이후 실무에서 작업을 하는 도중 마주치는 문제는 항상 단연코 '좀 더 빠르게', '메모리를 좀 더 효율적으로'일 것 같다. 나름 알고리즘을 열심히 풀어서 좀 한다고 생각했지만,,, 원리를 모르고 문제를 풀이하는 방법만 공부해왔던 것 같아서 다시 제대로 정리해보려 한다. 알고리즘에서 시간 복잡도는 주어진 문제를 해결하기 위한 연산 횟수를 말한다.모든 개발자들이 바라는 효율적인 알고리즘이란 쉽게 말하면 입력값이 커짐에 따라 증가하는 연산 시간의 비율을 최소화하는 것이다. 일반적으로 수행시간은 1억 번의 ..

📑 nomadcoders_바닐라JS로 크롬앱 만들기_day1

참으로 오랜만에 블로그를 작성하기 시작하는 것 같다. 작년에 취업한 이래로 한 해가 바뀌면서 회고록을 작성하면서 다짐했지만 동기부여가 크게 되지 않았나 보다... 벌써 입사한 지 8개월 차가 되어 간다. 그동안 미뤄왔던 개인 공부를 솔찬히 시작하면서 블로그 작성을 시작해야겠다. 크게는 풀스택 개발자를 향하여 프런트 엔드는 자바스크립트를 시작으로 리액트까지 학습하며 어플을 만들어 볼 것이고, 백엔드는 김영한 선생님의 강의를 학습하면서 스프링부트와 JPA를 완전 정복하려 한다. 오늘이 시작이다. 너무 많은 것을 이루려 하지 말고 하루에 조금씩이라도 꾸준하게 진행하자. 무료로 제공되는 강의로 아주 높은 수준의 퀄리티를 자랑한다. 이전에 깃허브를 학습할 때 간간히 유튜브에서 봤던 형인데, 사이트에 방문하여 자신..

📑 2022년 회고록

도입 처음 블로그를 시작했을때가 생각이 난다. 이걸 굳이 해야하나 라는 생각과 함께 그냥 따로 공부만 하면 되지 라는 생각과 함께 블로그 시작을 미루고 미루었다. 옛날 사람은 아니지만 공책에 수기로 작성해서 정리하는것이 마음이 편하다고 생각하던 사람 중 1명이었다. 하지만 블로그에 내가 공부한 내용을 정리해두는 것이 나의 이력이 될 수 있다는 생각에 당찬 마음으로 시작하였지만,,,, 취업을 성공한 이후로 초심을 많이 잃었던 듯 싶다 . 졸업 2022년은 참으로 바쁘고 빠듯한 일정이었다. 수험생활을 끝마치고, 수능을 와장창 망해버린 나는 학점은행제로 학위를 따기로 결심을 하고 광운대학교 정보과학교육원에 입학했다. 그때까지만 해도 내가 이 직종에서 일을 하게 될 것이라고는 꿈에도 생각하지 못했었다... 막상..

📑 HTTP Request message

Request Header의 구조 파악 request line : 요청 형식 request headers request message header = line + headers Header와 Body는 개행으로 띄워서 구분하는 것이 약속 request message body(= payroad) Request Line GET -> 메소드 : 웹 브라우저와 웹 서버가 통신하는 방식 (데이터를 웹 서버로부터 가져올 때 사용. ex> URL) /1.html -> 웹 서버에게 요청하는 정보 HTTP/1.1 -> 웹 브라우저가 현재 사용하는 HTTP 프로토콜 버전 Request Headers host(필수) -> 인터넷에 존재하는 PC를 식별하는 개체 User-agent : 웹 브라우저의 다른 표현. 요청하는 웹 ..

📑 동적계획법_2294_동전2

동적계획법 주어진 문제를 여러 부분 문제들로 나누어 푼 다음, 그 결과들로 큰 문제를 푸는 알고리즘 어떤 문제를 풀기 위해 해결해야 하는 부분 문제의 개수가 k개라고 한다면, 전체적으로 풀어야하는 문제의 개수는 O(kN)개가 될 것이다. 이때 k가 충분히 무시할 수 있을 정도로 작은 수이고, 각가의 문제를 푸는데 걸리는 시간이 O(1)이라면, 문제의 결과를 저장할 O(N)의 메모리가 필요하며, O(N)만큼의 시간이 소요된다. 분할 정복 vs DP 분할하는 점은 동일하지만 전자는 겹치는 부분문제가 없지만, 후자는 있다는 것이다. 따라서 메모이제이션 기법으로 비효율적인 반복 연산을 줄인다. Greedy vs DP 모든 경우를 메모리까지 소비해가며 샅샅이 체크하는 점에서 전자보다 후자가 실행 시간은 길지만, ..