문제 : 

 

코딩테스트 연습 - K번째수

[1, 5, 2, 6, 3, 7, 4] [[2, 5, 3], [4, 4, 1], [1, 7, 3]] [5, 6, 3]

programmers.co.kr

오늘 재택근무 중에 팀장님한테 급 대면면담 호출을 받았다,, ^^ 행복하다...

 

전철에 사람이 정말 없어서 노트북을 꺼내 Level 1 문제를 슬렁 풀어봤다...

 

Solution

def solution(array, commands):
    answer = []
    
    for a in range(len(commands)):
        
        i=commands[a][0]
        j=commands[a][1]
        k=commands[a][2]
        tmp=array[i-1:j] #slice
        tmp.sort()
        answer.append(tmp[k-1])
                
    return answer

슬라이스로 풀었당,, 

반응형

크롤링 환경 만들기

 

1. Python 공식 사이트(https://www.python.org/downloads/)에서 Python 설치하기

 

2. PIP 인스톨용 스크립트를 저장하기 (https://bootstrap.pypa.io/get-pip.py)  ‘다른 이름으로 링크 저장’

   

   cmd > 링크 저장한 경로에서 PIP 설치하기

 

python get-pip.py

 

 

3. requests, BeautifulSoup 라이브러리 설치하기

 

pip install beautifulsoup4 requests

 

  • requests : html 데이터 요청
  • BeautifulSoup : html 파싱

Requests 테스트

내 티스토리 주소를 requests 해봤다

import requests
from bs4 import BeautifulSoup
def crawling():
    url='https://rokroks.tistory.com/'
    response = requests.get(url)
    print(response)
    print(response.status_code) #응답코드, 200이면 성공
    print(response.text)
crawling()

▲실행결과

 

잘 불러오는 것을 볼 수 있다. 다음엔 원하는 내용을 파싱해보자.

 

 


Reference

 

Windows용 PIP 설치하기(How to Install PIP For Python on Windows) - 아크몬드넷

PIP란? pip는 파이썬으로 작성된 패키지 소프트웨어를 설치 · 관리하는 패키지 관리 시스템이다. Python Package Index (PyPI)에서 많은 파이썬 패키지를 볼

archmond.net

 

파이썬 크롤링 시작하기 - html 구조와 간단한 크롤링

crawling html 간단한 구조 tag head title body p a href img h1, h2, h3, h4 input button css란? tag별 스타일링 id, class 크롤링 requests beautiful soup 네이버 블로그 크롤링 해보기 크롤..

software-creator.tistory.com

 

반응형

'Web > 실습' 카테고리의 다른 글

웹 서비스 다뤄보기 (2) - JavaScript와 DOM  (2) 2021.05.12
웹 서비스 다뤄보기 (1) - HTML, CSS  (0) 2021.05.12
크롤링 (1)-개념 및 방식  (0) 2021.05.03

해시 문제를 풀다가 딕셔너리에 값을 추가하는 법에 대해 찾아보았다.

 

collections 라이브러리의 defaultdict 이라는 함수를 사용해서 값 추가가 가능하다. 

 

from collections import defaultdict
clothes=[["yellowhat", "headgear"], ["bluesunglasses", "eyewear"], ["green_turban", "headgear"]]
size=len(clothes)
dic=defaultdict(list)

for i in range(size):
    dic[clothes[i][1]].append(clothes[i][0])

print(dic)
print(dic.values())
print(dic.keys())
print()
dic['headgear'].remove('yellowhat')
print(dic)

 

 

실행 결과

 

위 실행결과를 보면 리스트 처럼 딕셔너리에 append(), remove() 함수를 사용할 수 있다.

반응형

문제 : 

 

코딩테스트 연습 - 주식가격

초 단위로 기록된 주식가격이 담긴 배열 prices가 매개변수로 주어질 때, 가격이 떨어지지 않은 기간은 몇 초인지를 return 하도록 solution 함수를 완성하세요. 제한사항 prices의 각 가격은 1 이상 10,00

programmers.co.kr

 

스택/큐에 있던 카테고리지만 그냥 이중 for문으로 풀었다.

 

입출력 예시의 3초, 4초 시점에서 가격이 1초 뒤에 떨어져도, 1초간 가격이 떨어지지 않아도

둘다 1초간 가격이 떨어지지 않은 경우라는 것이 직관적으론 이해가 갔는데 

처음 구현할때는 계속 원하는 출력이 나오지 않았다 ㅡㅡ

 

짜증나서 이틀 뒤에 처음부터 다시 풀었더니 풀렸다.

 

Solution

def solution(prices):
    answer = []
    size=len(prices)
    for i in range(size):
        cnt=1
        for j in range(i+1,size-1):        
            if prices[i]>prices[j]: break    
            cnt+=1
            
        answer.append(cnt)
        if len(answer)==size-1:
            answer.append(0)
            return answer

 

헤헤

반응형

문제 : 

 

코딩테스트 연습 - 타겟 넘버

n개의 음이 아닌 정수가 있습니다. 이 수를 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 있습니다. -1+1+1+1+1 = 3 +1-1+1+1+

programmers.co.kr

예전에 풀어봤던 dfs/bfs 문제를 다시 풀어보았다

 

 

Solution

예전 풀이 : BFS (deque() 사용)

from collections import deque
def solution(numbers, target):
    answer = 0
    size=len(numbers)
    dq=deque()
    dq.append((0,0))
       
    while dq:
        cur,cnum=dq.popleft()
        
        if cur==size and cnum==target:
            answer+=1
        
        else:
            if cur<size:
                nnum=numbers[cur]
                dq.append((cur+1,cnum+nnum))
                dq.append((cur+1,cnum-nnum))    
    return answer

 

이번 풀이 : DFS

res=0
def dfs(numbers,num,target,idx):
    global res
    if idx==len(numbers):
        if num==target:
            res+=1
            return
        else : return
    
    dfs(numbers,num+numbers[idx],target,idx+1)
    dfs(numbers,num-numbers[idx],target,idx+1)
    
def solution(numbers, target):
    global res
    dfs(numbers, 0, target, 0)
    return res

 

 

반응형

소프트웨어 공학 관점에서 S/W의 질을 향상하는 법

>>> 강한 응집력(Strong Cohesion), 약한 결합력(Weak Coupling) 지향

OOP = 클래스를 사용하여 강한 응집력, 클래스간에 독립적인 설계로 약한 결합력을 지향

 


 

객체 지향 프로그래밍의 특징

 

1. 캡슐화

 

객체의 속성(데이터 필드)과 행위(메소드)를 하나로 결합

실제 구현 내용 일부를 외부에 은닉 (접근 제어자 public/ protected/ private 로 정보은닉)

접근지정자에 의해 제한된 멤버들은 컴파일러에 의해 판단됨

> 제한된 멤버 접근 시 컴파일 오류, 실행코드 생성 제한

 

 

 

2. 추상화

 

객체들의 공통된 특징 파악, 정의

> 불필요한 정보는 숨기고 중요한 정보만 표현. 프로그램을 간단히 만드는 것

  • 클래스 = 추상 자료형
  • 객체 = 추상 자료형의 인스턴스
  • 메소드 = 추상 자료형에서 정의된 연산
  • 생서자 = 메소드 호출 
  • 추상클래스 (abstract) : 추상메소드 포함 (미완성 클래스) > 객체 생성 불가능 (Is-a)
  • 인터페이스 (interace)  : 추상메소드, 상수 포함 > 다중상속 (implements) (has-a)

 

 

 

3. 다형성 (오버라이딩/오버로딩)

 

같은 형태에 다른 기능 > 코드의 재사용성 증가, 유지보수 용이

  • 오버라이딩
    • 부모 클래스를 상속받아 자식 클래스에서 부모클래스의 메소드를 재정의

 

  • 오버로딩
    • 같은 이름의 메소드매개변수의 갯수데이터 타입을 다르게 정의

 



4. 상속성 (재사용)


새로운 클래스가 기존의 클래스의 자료와 연산을 이용할 수 있게 하는 기능 > 코드의 중복 최소화

클래스 간의 종속 관계를 형성 > 객체 조직화



동적 바인딩
실행 시간 중에 일어나거나 실행 과정에서 변경될 수 있는 바인딩

프로그램의 한 개체나 기호를 실행 과정에 여러 속성이나 연산에 바인딩함으로써 다형 개념을 실현

 

정적 바인딩

컴파일 시간에 완료되어 변화하지 않음

 


Reference

 

객체 지향 프로그래밍 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 객체 지향 프로그래밍(영어: Object-Oriented Programming, OOP)은 컴퓨터 프로그래밍의 패러다임 중 하나이다. 객체 지향 프로그래밍은 컴퓨터 프로그램을 명령어의 목

ko.wikipedia.org

 

 

OOP(Object-Oriented Programming, 객체 지향 프로그래밍) 이란?

OOP란 무엇인가? OOP (Object-Oriented Programming)이란 객체 지향적인 프로그래밍. 즉, C언어같은 절차 지향적인 프로그래밍이 아닌 객체의 관점에서 프로그래밍을 한다는 것이다. OOP는 객체를 기준으로

velog.io

 

반응형

'Program Language > Java' 카테고리의 다른 글

🧐 JVM, JRE, JDK, GC, JAVA 실행과정, etc...  (0) 2022.07.24

DBMS : 데이터베이스 관리 시스템

다수의 사용자가 데이터베이스 내의 데이터를 접근할 수 있도록 설계된 시스템

  • 정의 기능(DDL: Data Definition Language)
    • 데이터베이스가 어떤 용도이며 어떤 식으로 이용될것이라는 것에 대한 정의가 필요함
    • CREATE, ALTER, DROP, RENAME
  • 조작 기능(DML: Data Manipulation Language)
    • 데이터베이스를 만들었을 때 그 정보를 수정하거나 삭제 추가 검색 할 수 있어야함
    • SELECT, INSERT, UPDATE, DELETE
  • 제어 기능(DCL: Data Control Language)
    • 데이터베이스에 접근하고 객체들을 사용하도록 권한을 주고 회수하는 명령
    • GRANT REVOKE

 


UML (Unified Modeling Language) : 통합 모델링 언어 - 프로그램 설계를 표현하기 위해 사용하는 그림으로 된 표기법

 


View = 가상 테이블

하나 이상의 테이블에서 유도된 가상 테이블

  • 사용자가 view에 접근했을 때 해당하는 데이터를 원본에서 가져옴
  • view에 나타나지 않은 데이터를 간편히 보호할 수 있는 장점 존재 (데이터를 제한적으로 보여줄 수 있음)


정규화

  • 중복 최소화/ 데이터 구조화/ 불필요한 데이터 제거/ 이상현상 방지!
  • 테이블 구성을 논리적, 직관적으로 함 
  • CRUD 많이 일어나는 DB는 정규화 되는게 좋음 - OLTP (OnLine Analytical Processing) DB  : 온라인 거래 시스템

 

 

이상현상 (Anomaly)

릴레이션에서 일부 속성들의 종속 > 데이터 중복 > 데이터 불일치가 발생하는 것 (insert, update, delete)

  • 갱신 이상 (Modification Anomaly) : 반복된 데이터 중에 일부를 갱신할 시 데이터의 불일치 발생
  • 삽입 이상 (Insertion Anomaly) : 불필요한 정보를 함께 저장하지 않고서는 어떤 정보를 저장하는 것이 불가능하다.
  • 삭제 이상 (Deletion Anomaly) : 필요한 정보를 함께 삭제하지 않고서는 어떤 정보를 삭제하는 것이 불가능하다.

 

반정규화

  • 정규화 역과정. 정규화된 시스템을 성능 향상개발과 운영의 단순화를 위해 역으로 정규화를 수행.
  • 조회에 대한 처리가 중요하다고 판단될 때 부분적으로 반정규화 수행   
  • 일반적으로 join을 많이 사용해야 할 경우, 대량의 범위를 자주 처리하는 경우 등 

 



데이터베이스 무결성

  • DB 설계에서 가장 중요!
  • 테이블에 있는 모든 행들이 유일한 식별자를 가질 것을 요구함 (같은 값 X)
  • 외래키 값은 NULL이거나 참조 테이블의 PK값이어야 함
  • 한 컬럼에 대해 NULL 허용 여부와 자료형, 규칙으로 타당한 데이터 값 지정

 

- 무결성 보장 방법

  • 데이터 조작 프로그램 내에서 데이터 생성, 수정, 삭제 시 무결성 조건 검증하기
  • 트리거 이벤트 시 저장 SQL을 실행하고 무결성 조건을 실행하기
  • DB 제약조건 기능 선언하기


트리거자동으로 실행되도록 정의된 저장 프로시저

  • insert, update, delete문에 대한 응답을 자동으로 호출
  • 업무 규칙 보장, 업무 처리 자동화, 데이터 무결성 강화


Oracle VS MySQL

오라클 : 대규모 트랜잭션 로드 처리, 성능 최적화를 위해 여러 서버에 대용량 DB 분산

MySQL : 단일 데이터베이스로 제한, 대용량 데이터베이스로는 부적합. 작은 프로젝트에서 적용시키기 용이하며 이전 상태를 복원하는데 commit과 rollback만 존재

 


Commit과 Rollback

  • Commit : 하나의 논리적 단위(트랜잭션)에 대한 작업이 성공적으로 끝났을 때, 이 트랜잭션이 행한 갱신 연산이 완료된 것을 트랜잭션 관리자에게 알려주는 연산
  • Rollback : 하나의 트랜잭션 처리가 비정상적으로 종료되어 DB의 일관성을 깨뜨렸을 때, 모든 연산을 취소시키는 연산


JDBC와 ODBC

  • JDBC : 자바에서 DB에 접근하여 데이터를 조회, 삽입, 수정, 삭제 가능 DBMS 종류에 따라 맞는 jdbc를 설치해야함
  • ODBC : 응용 프로그램에서 DB 접근을 위한 표준 개방형 응용 프로그램 인터페이스. MS사에서 만듦, Excel/Text 등 여러 종류의 데이터에 접근할 수 있음



 


Reference

 

gyoogle/tech-interview-for-developer

👶🏻 신입 개발자 전공 지식 & 기술 면접 백과사전 📖. Contribute to gyoogle/tech-interview-for-developer development by creating an account on GitHub.

github.com

 

 

데이터베이스 이상 현상(Anomaly)

이상 현상 (Anomaly) 정규화를 하기 전에 봤으면 더 이해하기 쉬웠을까? 라는 생각을 했다. 좋은 관계형 데이터베이스를 설계하는 목적 중 하나가 정보의 이상 현상(Anomaly) 이 생기지 않도록 고려해

1000hg.tistory.com

 

 

데이터베이스 정규화

데이터베이스 정규화란? 데이터 베이스 정규화란 데이터의 중복을 줄이고, 무결성을 항상 시키는 등 여러 목적을 달성하기 위해 관계형 데이터베이스를 정규화된 형태로 재디자인하는 것을 말

1000hg.tistory.com

 

반응형

HTTP & HTTPS

 

HTTP : Hypertext Transfer Protocol : HTML 전송을 위한 통신규약

 

HTTP 동작 순서 : TCP → HTTP

HTTPS 동작 순서 : TCP → SSL → HTTP

 

SSL(Secure Socket Layer)프로토콜 = TLS(Transport Layer Security) : 정보를 암호화시킴 

  • 대칭키 : 암호화 키 = 복호화 키 
  • 공개키-개인키 : 두개의 키/ 공개키-암호화, 개인키(비밀키)-복호화 
  • SSL 동작법 : 클라이언트-서버 주고받는 실제 데이터 = 대칭키 / 대칭키의 키 = 공개키

RSA : SSL/TLS에 가장 많이 사용되는 공개키 암호화 알고리즘 (이름 뜻 : 개발한 세 사람의 성을 따서 만든거;)

 - 공개키로 암호화 > 개인키로만 복호화 / 개인키로 암호화 > 공개키로만 복호화 

 

모든 사이트가 HTTPS로 하지 않는 이유 : 암호화 과정으로 인한 속도 저하 발생

 

 

 


 

GET & POST

가장 많이 사용되는 HTTP 메서드로 HTTP 프로토콜을 이용해 서버에 무언가 요청할 때 사용하는 방식이다.

GET (select) : 데이터 조회, 검색
URL을 통해 모든 파라미터를 전달 > 주소창에 전달 값이 노출됨. URL 길이가 제한이 있기 때문에 전송 데이터 양이 한정되어 있고, 형식에 맞지 않으면 인코딩해서 전달해야 함 

POST (수행) : 데이터/서버의 값이나 상태 변경 (등록, 수정)
HTTP BODY에 데이터를 포함해서 전달 > 웹 브라우저 사용자의 눈에는 직접적으로 파라미터가 노출되지 않고 길이 제한도 없음.

 

하기 메소드들은 POST 메소드로도 구현 가능하다. 좀더 기능을 세부화 했다고 보면 된다.

  • PUT: 리소스를 대체, 해당 리소스가 없으면 생성
  • PATCH: 리소스 부분 변경
  • DELETE: 리소스 삭제

그외

  • HEAD: GET과 동일하지만 메시지 부분을 제외하고, 상태 줄과 헤더만 반환
  • OPTIONS: 대상 리소스에 대한 통신 가능 옵션(메서드)을 설명(주로 CORS에서 사용)
  • CONNECT: 대상 자원으로 식별되는 서버에 대한 터널을 설정
  • TRACE: 대상 리소스에 대한 경로를 따라 메시지 루프백 테스트를 수행

Reference

 

gyoogle/tech-interview-for-developer

👶🏻 신입 개발자 전공 지식 & 기술 면접 백과사전 📖. Contribute to gyoogle/tech-interview-for-developer development by creating an account on GitHub.

github.com

 

[정보보안] SSL(Secure Socket Layer) 이란

현재 근무 중인 업체에서 SSL 인증서 적용 작업이 필요하다고 합니다. SSL 인증서관련 필요한 것이 무엇인지에 대한 요청이 있었습니다. 간단하게 SSL에 대해 정리해보겠습니다. 1. SSL 개념 잡기 SSL

12bme.tistory.com

 

RSA 암호화 - 나무위키

RSA 방식으로 암호화를 하기 위해선 먼저 키를 만들어야 한다. 그 과정은 다음과 같다. 두 소수 p,q p , q p,q 를 준비한다.[4]p−1, q−1 p - 1,\ q - 1 p−1, q−1과 각각 서로소인 정수 eee[5]를 준비한다.[6

namu.wiki

 

[HTTP] 주요 메서드 5가지 정리(GET / POST / PUT / PATCH / DELETE)

📖 ✏️ TIL 시리즈에 작성된 글은 '매일 매일 학습한 지식 조각을 메모해 놓은 포스팅'입니다. 공유가 아닌 개인적인 학습 내용 기록을 목적으로 작성되었음을 알려드립니다.

velog.io

 

반응형

언어의 목적 : 페이지의 동적 제어

 

객체 기반의 스크립트 언어 (컴파일 X, 텍스트로 실행)

함수기반 언어 (변수 함수 내에서만 사용가능)

웹 브라우저에서 실행 (html/css에 의존적)

모듈화 미지원

동적타입 (변수 타입 지정 없어도 가능)

멀티 패러다임 언어 (객체 지향/함수형 프로그래밍 둘다 지원)


자바스크립트가 주로 사용되는 프로젝트

▷ 동적인 싱글 페이지 애플리케이션(SPA)
▷ 제이쿼리(jQuery), 앵귤러JS(AngularJS), 백본(Backbone.js), 엠버(Ember.js), 리액트(React.js) 등
▷ 노드(Node.js), 몽고디비(MongoDB), 익스프레스(Express.js) 등
모바일 앱 개발 : 리액트 네이티브(React Native), 폰갭(PhoneGap) 등

 

 


Reference

 

자바 vs 자바스크립트

이 글은 자바와 자바스크립트를 혼동하는 사람, 차이점이 궁금한 사람 등을 위하여 쓴 글입니다.또한 자바스크립트는 다른 언어에 비해 어떤 단점이 있으며 그 단점들을 어떻게 극복해야할지에

perfectacle.github.io

 

 

자바 VS 자바스크립트, 엄연히 다르다? (차이점, 핵심 기능 비교) - Wishket

자바 VS 자바스크립트, 엄연히 다르다? 과연 이 두 개발언어의 차이점은 무엇일까요? 이번 시간 위시켓이 꼼꼼하게 알려드리겠습니다! 지금 바로 만나보세요:)

blog.wishket.com

 

반응형

'CS Interview > etc' 카테고리의 다른 글

마이크로 서비스란 (MSA) - 모놀리식 아키텍처, API Gateway vs ESB  (0) 2021.06.16
REST API 특징과 보안  (0) 2021.06.15
[IBM API connect] 특징  (2) 2021.05.11
React & Vue  (0) 2021.05.06
RESTful, TDD, immutable, MVC  (0) 2021.05.04

React 와 Vue는 차이점보다 유사점이 더 많은 UI 라이브러리이다.

 

공통점

  • Javascript 기반의 Frontend Framework
  • 반응적이고 조합 가능한 컴포넌트 제공 (Reactive Component)
  • Virtual DOM 으로 빠른 렌더링
  • 경량 라이브러리
  • Server Side Rendering
  • 라우터, 번들러, state management 와 결합이 쉬움
  • 훌륭한 개발자 커뮤니티와 지원

 

차이점

  • React에서는 모든 것(HTML, CSS...)이 JavaScript 이다
  • Vue는 고전적인 웹기술들을 받아들여서 그 기반 위에 만들어짐

 

  • Vue.js는 사용자에게 쉽게 느껴지는 API를 제공하기 위해 라이브러리가 직접 헤비 리프팅을 하는 경우가 많다.
  • React는 Vue.js에 비해 사용자 및 사용처에 대해 더 적은 가정을 하고, 컴포넌트 기반의 선언적 UI 렌더링이라는 가장 핵심적인 기능과 관련된 부분만 코어에 포함한다.

Vue 의 장점

  • Template 과 Render Function 을 모두 사용할 수 있는 옵션
  • 간편한 Syntax 와 프로젝트 설정
  • 빠른 렌더링과 더 작은 용량

React 의 장점

  • 큰 규모에서 더 빛을 발하고, 테스팅이 수월
  • Web 과 Native 앱 개발에 모두 사용 가능
  • 더 큰 개발자 생태계에서 오는 많은 레퍼런스와 도구들

 

 


Reference

 

NAVER 기술 면접 리뷰

NAVER 기술 면접 질문과 답변을 정리합니다.

martianlee.github.io

 

 

React 인가 Vue 인가?

(번역) 프론트엔드 프레임워크 왕 React 와 신흥강자 Vue 를 프레임워크 특성에서 비교한 글

joshua1988.github.io

 

 

다른 프레임워크와의 비교 — Vue.js

Vue.js - 프로그레시브 자바스크립트 프레임워크

kr.vuejs.org

 

반응형

'CS Interview > etc' 카테고리의 다른 글

마이크로 서비스란 (MSA) - 모놀리식 아키텍처, API Gateway vs ESB  (0) 2021.06.16
REST API 특징과 보안  (0) 2021.06.15
[IBM API connect] 특징  (2) 2021.05.11
JavaScript  (0) 2021.05.06
RESTful, TDD, immutable, MVC  (0) 2021.05.04

+ Recent posts