728x90

전체 글 93

[자료구조] 동적계획법

동적계획법 (Dynamic Programming, DP) 동적 계획법은 처음 진행되는 연산을 기록해두고, 이미 진행했던 연산이라면 다시 연산하는 것이 아니라 기록되어 있는 값을 가져오는 것을 의미한다. 제일 쉽게 예로 들수 있는 것이 피보나치 수열 구하기 이다. 피보나치 수열을 구할 때 제일 쉽게 떠올릴 수 있는 것은 재귀함수로 푸는 것이다. 하지만 재귀로 풀게되면, 이전 숫자를 더하는 계산부가 중복으로 작동하기 때문에, 시간적 손실이 크다. 따라서 이전 계산 결과를 저장해두고 사용하는 동적계획법이 훨씬 시간 복잡도를 낮추는 것에 도움이 된다. 보통 동적 계획법을 사용하는 문제는, 공통된 계산 과정을 찾아내서 진행하는 편으로, 예전 수학을 배웠을 때 기억을 떠올려보면, 점화식으로 문제를 푸는 것과 비슷하..

알고리즘 2022.03.24

[백준 브론즈3] 팩토리얼.py

https://www.acmicpc.net/problem/10872 10872번: 팩토리얼 0보다 크거나 같은 정수 N이 주어진다. 이때, N!을 출력하는 프로그램을 작성하시오. www.acmicpc.net 정수 n 이 주어질때, n!을 출력하면 되는 문제 이다. 입출력의 예는 다음과 같다. 예제 입력 1 10 예제 출력 1 3628800 예제 입력 2 0 예제 출력 2 1 팩토리얼 함수를 재귀함수로 구현해서 해결하면 된다. 같은 로직을 아래 게시글에서 설명하고 있으니 참고하면 된다. https://paabaep.tistory.com/63 [자료구조] 재귀함수 재귀함수란 무엇일까 컴퓨터 과학에 있어서 재귀(Recursion)은 자신을 정의할 때 자가 자신을 재 참조하는 방법을 의미한다. 주로 재귀 호출의..

알고리즘 2022.03.23

11주차 정리(3/14~18)

일주일은 정말 빨리 지나간다. 특히 금요일 부터 일요일은 그냥 없어진다. 너무 슬프다. 요즘은 요일 감각도 없어지고 있다. 이러다가 날짜 개념이 아예 사라지게 생겼다. 큰일이다. 이번 주차는 객체 지향 개념과 Spring을 시작(환경 세팅 및 맛보기)했다. 오늘(22일) 기준으로 다음 주에 중간 프로젝트가 있는 만큼 열심히 백엔드 개념을 익혀보기로 했다. 객체 지향 설계 개념에서 주요하게 배운 것은 "응집도 향상 전략" 과 "결합도 감소 전략" 이다. 이에 앞서 짚고 가야 할 것이 있는데, 그것은 바로 관심사에 따른 클래스의 분리이다. 객체 지향의 개념에서는 단일책임원칙(SRP, Single Responsibility Principle)이라는 것이 있다. 하나의 클래스나 메소드는 단 하나의 책임(역할)만..

[Server] Docker & Kubernetes

도커(Docker) 도커 소프트웨어는 리눅스 컨테이너를 만들고 사용할 수 있도록 하는 컨테이너화 기술이다. 컨테이너 기반의 오픈소스 가상화 플랫폼이라고 불리는데, 그렇다면 여기서 말하는 컨테이너는 무엇일까? 📦 컨테이너 : 애플리케이션과 이를 구동하는 환경을 Host OS로 부터 격리한 공간(이미지를 실행한 상태) 응용 프로그램의 종속성과 함께 응용 프로그램 자체를 패키징 또는 캡슐화해서 격리된 공간에서 프로세스를 동작시키는 기술 컨테이너는 일반적으로 마이크로 서비스로 사용됨 마이크로 서비스는 전체 애플리케이션 서비스를 기능별로 나눈 것 -> 변경과 조합이 가능 기능별로 나누어져있는 각각의 마이크로 서비스는 빠르게 배포가 가능함 분리해서 사용하기 때문에 개별 변경사항이 분리된 다른 기능들에 영향을 미치지..

개인공부/BE 2022.03.21

[자료구조] 재귀함수

재귀함수란 무엇일까 컴퓨터 과학에 있어서 재귀(Recursion)은 자신을 정의할 때 자가 자신을 재 참조하는 방법을 의미한다. 주로 재귀 호출의 형태로 많이 사용되며, 반드시 종료 조건이 포함되어야 한다. (무한 루프를 방지 하기 위함) 반복문을 사용하는 코드는 항상 재귀함수를 통해 구현하는 것이 가능하며, 그 반대도 가능하다. 이전에 살펴본 알고리즘 중 DFS 역시 재귀 형식으로 구현이 가능하다. 이외에도 대표적인 예제를 살펴보고자 한다. 재귀함수의 대표적인 예 - 팩토리얼 n!의 형태로 표현되는 팩토리얼은 풀어서 작성하면 다음과 같다. n! = n * (n-1) * ... * 2 * 1 이걸 재귀함수를 이용한 코드(파이썬)을 작성하면 다음과 같다. def fact(n): if n==1: return..

알고리즘 2022.03.18

[프로그래머스 lv 2] 전화번호 목록.py

https://programmers.co.kr/learn/courses/30/lessons/42577 코딩테스트 연습 - 전화번호 목록 전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다. 전화번호가 다음과 같을 경우, 구조대 전화번호는 영석이의 전화번호의 접두사입니다. 구조 programmers.co.kr 전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인 하면 된다. 입출력 예제는 다음과 같다. phone_book return ["119", "97674223", "1195524421"] false ["123","456","789"] true ["12","123","1235","567","88"] false 딕셔너리를 이용하면 ..

알고리즘 2022.03.17

10주차 정리(3/7~8, 3/10~11)

3월 9일은 대선으로 인해 수업을 하지 않아서 7, 8, 10, 11 이렇게 4일 간 수업이 있었다. 그중 10일 부터 13일 까지는 리액트를 활용해보는 미니프로젝트를 진행했었다. 리액트의 마지막 수업은 책 주문 사이트를 만들어보는 것이었다. 특히 모달 화면과 컨텍스트 개념을 집중적으로 사용해보았는데, 컨텍스트 개념은 이해하는 데 시간이 조금 걸리긴 했지만, 꼭 필요한 개념이라는 것을 느꼈다. 전역변수 처럼 사용하는 개념이었는데, 이후 팀으로 진행한 미니프로젝트에서도 유용하게 사용되었기 때문이다. (컨텍스트_Context 개념은 아래 링크를 참고) https://ko.reactjs.org/docs/context.html Context – React A JavaScript library for buildi..

[프로그래머스 lv 1] 완주하지 못한 선수.java

https://programmers.co.kr/learn/courses/30/lessons/42576 코딩테스트 연습 - 완주하지 못한 선수 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수 programmers.co.kr 마라톤에 참여한 선수와 완주한 선수의 목록이 주어질 때 완주 하지 못한 선수가 누구인지 찾는 문제이다. 입출력의 예는 다음과 같다. participant completion return ["leo", "kiki", "eden"] ["eden", "kiki"] "leo" ["marina", "josipa", "nikola", "vinko", "..

알고리즘 2022.03.15

[Ops] DevOps에 대한 (간략한) 정리

📝 DevOps 모델 정의 DevOps는 애플리케이션과 서비스를 빠른 속도로 제공할 수 있도록 조직의 역량을 향상 시키는 '문화 철학' 과 '방식 및 도구'의 조합이다. DevOps를 사용하는 조직은 기존의 소프트웨어 개발 및 인프라 관리 프로세스를 사용하는 조직보다 제품을 더 빠르게 혁신하고 개선할 수 있다. 이런 빠른 속도를 통해 더 나은 고객지원은 물론 더 효과적인 시장 전략을 만들 수 있다. 💾 DevOps 작동 방식 이 모델에서는 개발팀과 운영팀이 고립되어 존재하지 않는다. 이 두 팀이 단일팀으로 합쳐서 엔지니어가 개발에서 테스트, 배포, 운영에 이르기까지 전체 애플리케이션 수명 주기에 걸쳐 작업하고 단일 기능에 한정되지 않은 광범위한 기술을 개발하게 된다. 이런 팀에서는 속도가 느리고 수동으로..

개인공부/BE 2022.03.14

[React] 넷플릭스 메인 화면 클론 코딩

넷플릭스 메인화면을 React로 클론 코딩해보려 한다. 넷플릭스 안 본지 진짜 오래되었는데... 컨텐츠 말고 맨날 메인 화면만 보고 있었던 탓인지 메인화면은 대충 떠오르는 것 같다. (솔직히 뭐 보지 고민하느라 메인화면 보는 시간이 실제 컨텐츠 보는 시간 보다 길었던거.. 나만 그런거 아니지) 기본적으로 아래의 영상을 기반으로 한 클론 코딩이다. https://www.youtube.com/watch?v=XtMThy8QKqU TMDB의 영화 정보 API를 이용해서 메인 화면에 영화 정보를 넷플릭스의 메인화면 처럼 보여주는 코드를 구성했다. React 공부에 치중을 둔 프로젝트인 만큼 실제 서비스의 동작은 하지 않는다. 우선 기본 index 페이지 코드는 다음과 같다. 이 코드에서는 후에 우리가 사용할 루트..

개인공부/FE 2022.03.11
728x90
반응형