- 93

가장 큰 수 (스택)

먼저 처음 포인트는 이 숫자들을 리스트에 받아줘야하는데, 띄워쓰기로 구분되어있지 않기 때문에 항상 받아왔던 방식인 map(int, input().split()) 방식으로 받을 수가 없다. 그래서 str로 받아서 이것들을 list에 넣는뒤, 다시 int형으로 변환시켜준다.  b_num, delete = map(int, input().split())nums = []for i in range(len(str(b_num))):    nums.append(str(b_num)[i])nums = list(map(int, nums)) 그 후, 새로운 리스트를 만들어 nums에 있는 수들을 끄집어 내며 하나씩 비교해보고, 새로운 리스트에 들어있는 수보다 nums[0]에 들어있는 수가 크다면 이를 빼주고, 삭제할 수 있는 ..

역수열 (그리디 알고리즘)

원래 수열을 [0] * N 으로 초기화 시킨 뒤, 정렬이 되어있다 생각하고 1부터 경우를 생각하며, 원래 수열의 0을 역수열의 원소만큼 카운팅 하면 간단한 문제이다. 이중반복문을 돌리면서 i -> 역수열의 인덱스번호  j-> 원수열의 0을 카운팅하기 위한 인덱스 번호라 생각하고 cnt로 0을 카운팅하면서 어차피 오름차순으로 정렬되어 있기에, 앞에 더 작은 숫자가 나와있는건 신경쓰않고 오로지 0만 카운팅 해서, cnt 와 역수열의 원소값이 같아지면 그때의 i+1 값을 원수열에 넣어주고 다음 반복문을 통해 다음값을 카운팅 해주면 된다. import sys#sys.stdin=open("input.txt", 'rt')N = int(input())rev = list(map(int, input().split()))..

로그인 / 회원가입 구현해보기 (6) AWS DB만들기(한글설정), RDS와 변동 및 워크벤치 이용하기

저번시간 까지 DB 없이 로그인 / 회원가입을 파일 형식으로 구현하였고, 이제는 AWS의 훌륭한 무료DB 서비스( 잘못하면 과금 ㅠ ) 를 이용하여, DB를 연동한 로그인 / 회원가입 기능구현을 준비하려고 한다. 먼저 적당한 RDS 인스턴스를 만들어주고, 파마리터 그룹 설정도 char 부분을 utf-8로 맞추어 준뒤 이 인스턴스의 디폴트 값으로 만들어준다. 그리고 커맨드 창을 열어 mysql -h 엔드포인트 -u 사용자이름 -p를 한 뒤, 비밀번호를 치고 들어가면 연결된 mysql이 시작되는데, 이게 뭔일인가,,, 2003 오류가 뜬다. 이때는 AWS에 보안그룹에 들어가 인바운드 규칙 편집을 통해 수정한 뒤 다시 들어가면 된다.. https://code4human.tistory.com/74 나는 여길 참..

Back-end/Node.js 2022.06.05

로그인 / 회원가입 구현해보기 (5) 회원가입화면 만들기, 요청, 라우팅 구현하기 (DB 없이 구현)

회원가입 (register) 구현은 그리 어렵지 않았다. 먼저 login.ejs와 비슷한 형태인 register.ejs를 만들어주고, input으로 이름과 비밀번호 확인까지 받아주는 형태의 html 파일을 생성해주었다. 그 후 register.js 파일을 login.js 파일 형태로 만들어주되, 이름(name)을 추가해주고, 회원가입 도중 아이디가 입력되지 않은 경우와 비밀번호 두개가 틀린 경우 바로 alert으로 return해주는 if문을 추가해준다. function register() { if (!id.value) return alert("아이디를 입력해주십시오."); if (psword !== confirmPsword) return alert("비밀번호가 일치하지 않습니다."); const req ..

Back-end/Node.js 2022.06.03

로그인 / 회원가입 구현해보기 (4) User data 모델링, 서버 응답 데이터처리, 로그인 화면 꾸미기

두번째 학습인데도, 사실 너무 어렵다... 이번엔 User data (회원정보 id, psword, name, 등)를 만들어주고, 이를 모델링하여 User.js 와 UserStorage.js 에 담아준다. 문자 그대로 UserStorage는 "use strict"; class UserStorage { static #users = { id: ["baaams", "bodymind", "starjieun"], psword: ["1234", "123456", "12345678"], name: ["박희범", "박우상", "이지은"], }; static getUsers(...fields) { const users = this.#users; const newUsers = fields.reduce((newUsers, ..

Back-end/Node.js 2022.06.01

결정 알고리즘 (랜선 자르기)

결정 알고리즘을 이용할 때는 이분탐색을 이용하고, 문제에서 보통 답의 범위를 알 수 있다.  알고리즘은 다음과 같다. 주어진 수들 중에서 max를 찾는다. 그럼 범위는 1 ~ MAX의 수가 될 것이고, 이분탐색으로 중간값을 찾아 답이 되는지 찾아본다. 답이 되는지 찾아보기 위해, Count 함수를 만든다. 이 함수는 주어진 숫자들을 파라미터로 받은 값들로 모두 나누었을 때 그 합을 반환한다. 반환한 값과 K 값을 비교하여, 반환 값이 더 작으면 답이 될 수 없으므로 중간값 기준 더 작은 값, 즉 왼쪽을 탐색해야한다. 반환값이 K값보다 크거나 같을 때는 오른쪽을 탐색한다. 그렇게 while문을 반복하며 lt  이분탐색 기반의 가장 기본적인 알고리즘이며, 기본인 만큼 많이 쓰이고 중요한 알고리즘이니, 확실하..

로그인 / 회원가입 구현해보기 (3) 객체 제어, 로그인 API 만들어서 서버로 데이터 보내기

아이디와 비밀번호를 값들을 버튼을 누르면 서버로 전송해주어야 한다. 서버는 이 값들을 받아 로직을 처리하게 된다. 먼저 HTML 값들을 자바스크립트에서 제어하기 위해 DOM 객체를 사용해야한다. id, psword => id와 psword의 값들을 가져오고 DOM객체로 받아들여주고 버튼은 이벤트리스너로 클릭 시 함수(로그인 함수)를 실행시켜주도록 한다. const id = document.querySelector("#id"), psword = document.querySelector("#psword"), loginBtn = document.querySelector("button"); loginBtn.addEventListener("click", login); 이제 login 함수를 만들어 주어야 한다. ..

Back-end/Node.js 2022.06.01

로그인 / 회원가입 구현해보기 (2)

준비중인 프로젝트에 적용하기 위해 로그인 / 회원가입 강의를 다시 한번 복습하면서, 순서의 흐름을 적어보고자 한다. 우선 저번 시간에 했던 express 프레임워크를 쓰는 이유와 하드코딩에 이어, 뷰를 최적화해주고 라우팅을 폴더로 분리해주었다. 또 controller 부분 또한 분리해주고, app.listen() 또한 모듈화 해주었으며, npm install을 통해 패키지들을 다운 받았고, 깃허브와 연동하였으며 폴더 구조 또한 이런식으로 개발에 최적화 할 수 있도록 구조화 해주었다. 또 서버가 열려있을 때 코드 수정이 이루어지면 서버를 닫는 번거로움을 피하기 위해 nodemon을 install 해주어 nodemon으로 서버를 열면 코드 수정하고 저장하면 즉석으로 반영되기에 이제 로그인 기능적 구현하기 앞..

Back-end/Node.js 2022.05.31

탐색 & 시뮬레이션 [수토쿠 검사] (죽음의 4중 포문...)

코테 연습을 위해 알고리즘 복습을 하며 탐색의 기본격이라 할 수 있는 수토쿠 검사  알고리즘을 풀어보았다. 구간 검사를 위해 4중 포문을 돌려야하는 번거로움이 있지만, 알고리즘 자체는 그리 어렵지 않다.      3가지에 대한 검사를 해야한다.  1) 가로행에 1 ~ 9 가 다 있는지,2) 세로행에 1 ~ 9 가 다 있는지,3) 3*3 총 9개의 구간에 1 ~ 9 가 다 있는지, 먼저 9*9 총 81개의 숫자를 리스트(sudo) 에 담아준다.  sudo = [list(map(int, input().split())) for _ in range(9)] 그 뒤 check 라는 검사 함수를 만들어준다.  check 함수 안에는 1) 2) 3)을 차례로 검사해주는데 만약 거짓이 있는 순간 바로 False를 ret..

Python Web Framework Flask ( Why Flask ? )

이전에 로그인 / 회원가입 구현작업을 할 때, 잠깐 Django를 사용한적이 있다. Flask 또한 Django와마찬가지로 웹 프레임워크의 일종이다. Django => 파이썬 기반 매크로 웹 프레임워크 Flask => 파이썬 기반 마이크로 프레임워크 Django는 오픈소스와 사용자가 많고 20만줄의 이상의 코드 라인이기에 무거운 특징이 있지만 ORM을 지원하기에 데이터베이스 접근에 용이하기에, 큰 프로젝트에서 사용을 많이들 하곤 한다. Flask는 2만줄을 조금 넘는 코드로 장고보다 훨씬 가볍고, ORM DB가 존재하지 않기에, ORM 지우너 패키지를 선택해서 사용하면 된다. SQLAlchemy를 많이들 사용한다고 한다. REST API 서버처럼 용청과 응답이 확정적인 경우에는 가벼운 Flask가 장고보..