전체글 138

[백준] 11866: 요세푸스 문제 0 (Python)

11866번: 요세푸스 문제 0 첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 1,000) www.acmicpc.net 문제보고 이게 먼소린가 싶다냐.. 해서 그려보았다. 문제 분석할때 종이에 슥슥 써보는건 좋은습관인거 같다. 이렇게 그려보니까 무슨 문제인지 바로 파악이 되었다.( 악필 죄송 합니다 ) 그리고 이 문제를 해결하기 위해선 큐를 사용하는게 효율적이라는 것도 깨닫게 되었다. 큐를 사용해서 K와 다른 숫자는 다시 뒤로 append하고, 그 수만 pop한다음에 리스트에 추가하면 수열이 완성되는 방식이었다. FIFO인 큐 자료구조를 문제에 해결방식으로 떠올려서 그걸 이용해 문제를 해결하는게 핵심이었던거 같다. from collections import dequ..

코딩테스트 기본 자료구조(Python) - 딕셔너리

✍학습 키워드 딕셔너리? 사전이라는 의미이며, 데이터를 키(key) : 값(value) 형식으로 저장할 수 있는 자료구조이다. 키 값은 immutable 객체 타입이 와야한다. 키 값은 중복될 수 없다. 동일한 키를 추가하면 기존의 키와 값이 나중에 추가된 키와 값으로 변경된다( 이건 몰랐지! ) 📝새로 배운 개념 활용법 딕셔너리 values의 합 구하기 D = dict() for each in lists: D[each] = 23 answer = sum(D.values()) # value의 값이 합쳐서 리턴된다. 딕셔너리 정렬방법 # 1. sorted와 items() 이용 D = dict() D1 = dict(sorted(D.items())) #2. 람다 이용 answer = list(D.items())..

파이썬 코테 라이브러리 정리

✍학습 키워드 1. itertools 라이브러리 ⇒ 순열과 조합을 쉽게 구현할 수 있는 라이브러리. from itertools import permutations x = ['a', 'b', 'c'] y = list(permutations(x, 2)) print(y) #[('a', 'b'), ('a', 'c'), ('b', 'a'), ('b', 'c'), ('c', 'a'), ('c', 'b')] permutations 함수는 ‘a’, ‘b’, ‘c’에서 2개를 뽑아 나열하는 모든 순열을 리턴해준다. from itertools import combinations x = ['a', 'b', 'c'] y = list(combinations(x, 2)) #[('a', 'b'), ('a', 'c'), ('b', ..

스프링 부트와 AWS로 혼자 구현하는 웹 서비스 TIL - 3장 JPA

✍학습 키워드 JPA? 자바 표준 ORM이다. ORM은 객체를 매핑하는 것 MyBatis, iBatis는 SQL Mapper이며 쿼리를 매핑하는 것이다. JPA는 인터페이스로서 Hibernate같은 구현체가 존재한다. Spring Data의 하위 프로젝트들은 save(), findAll(), findOne() 등을 인터페이스로 갖고 있어 저장소가 교체되어도 기본적인 기능은 변경할게 없다. 여러 성능 이슈 해결책들을 준비해놓은 상태이기 때문에 네이티브 쿼리만큼의 성능을 낼 수 있다. Entity 클래스에서는 절대 Setter 메소드를 만들지 않는다. 해당 클래스의 인스턴스 값들이 언제 어디서 변해야 하는지 코드상으로 명확하게 구분할 수 없기 때문이다. JPA의 영속성 컨텍스트 example.update(r..

스프링 부트와 AWS로 혼자 구현하는 웹 서비스 TIL - 2장 테스트 코드

✍학습 키워드 TDD와 단위 테스트 ( Unit Test )는 다른 이야기다. TDD는 테스트가 주도하는 개발 ⇒ 테스트 코드를 먼저 작성한다. 단위테스트는 TDD의 첫 번째 단계인 기능 단위의 테스트 코드를 작성하는 것이다. 테스트 코드를 작성하면 빠르게 피드백 해서 sout으로 찍어보거나 굳이 톰캣을 내렸다 올렸다 할 필요가 없다! 테스트 코드로 검증 후, 못믿겠으면 수동으로 검증하는 것이다. 일반적으로 테스트 클래스틑 대상 클래스 이름에 Test를 붙인다. 📝새로 배운 개념 @SpringBootApplication 이 어노테이션으로 스프링 부트의 자동 설정, 스프링 Bean 일긱와 생성을 모두 자동으로 생성해 준다. 여기서부터 설정을 읽어가기 때문에 항상 프로젝트의 최상단에 위치해야만 한다! 롬복 ..

4. 나는 장사의 신이다

유튜버 장사의 신 채널을 원래 알고 있었다. 여기 나온 고깃집도 집 근처라서 여러번 갔었다. 맛도 좋았다. 그냥 불현듯이 생각나서 빌려 읽어 보았는데, 결국 나도 언젠가는 인생 2막을 펼칠 수 있을거 같아서 노하우? 라던가 저자가 살아온 삶을 간접적으로 체험해보면서 역시 잘되는 사람은 이유가 있구나 라고 생각했다. 나도 열심히 백엔드 공부해야지

IntelliJ 단축키 - 꿀팁 정리

순수 자바 어플리케이션을 개발할 떄는 Maven 이나 Gradle으로 개발하는게 낫다. (어차피 필요하기 때문) GroupId : 스프링, 스프링부트등 그룹 ArtifactId : 그룹의 하위 모듈(스프링 시큐리티, 스프링 MVC) Ctrl + Shift + F10: 이 단축키는 현재 포커스가 위치한 클래스나 메소드를 실행합니다. Shift + F10: 이 단축키는 가장 최근에 실행했던 실행 구성(Run Configuration)을 다시 실행합니다. 따라서, 첫번째는 현재 포커스가 있는 위치의 실행 가능한 코드를 실행하는 것이며, 두번째는 가장 최근에 실행했던 코드를 다시 실행하는 것입니다. 이런 차이가 있다. 추가 단축키 생성 단축키 ⇒ Alt + Ins 라인 복제 ⇒ Ctrl + D Redo or D..

카테고리 없음 2023.10.24

스프링 부트 3로 백엔드 입문하기 TIL - 5장 : ORM (JPA)

✍학습 키워드 ORM이란? ORM(object-relational mapping)은 자바의 객체와 데이터베이스를 연결하는 프로그래밍 기법이다. 즉, 객체와 데이터베이스를 연결해 자바 언어로만 데이터베이스를 다룰 수 있게 하는 도구 ORM이 있다면 데이터베이스의 값을 마치 객체처럼 사용할 수 있다. 데이터베이스에 대한 종속성이 줄어드나, 복잡하고 무거운 쿼리는 ORM으로 해결하기 불가능한 경우가 있다. JPA와 하이버네이트 자바에서는 JPA를 ORM의 표준으로 사용한다. JPA는 자바에서 관계형 데이터베이스를 사용하는 방식을 정의한 인터페이스이다. 하이버네이트는 JPA 인터페이스를 구현한 구현체이자 자바용 ORM 프레임워크이다. 자바 객체를 통해 데이터베이스 종류에 상관없이 데이터베이스를 자유자재로 사용할..

스프링 부트 3로 백엔드 입문하기 TIL - 4장 : 스프링 부트 3와 테스트

✍학습 키워드 테스트 코드 개념 익히기 테스트 코드는 작성한 코드가 의도대로 잘 동작하고 예상치 못한 문제가 없는지 확인할 목적으로 작성하는 코드이다. test 디렉터리에서 작업한다 다양한 패턴이 존재하는데, given-when-then 패턴을 주로 사용한다 given-when-then 패턴은 테스트 코드를 세 단계로 구분해 작성하는 방식을 말한다. given은 테스트 실행을 준비하는 단계 when은 테스트를 진행하는 단계 then은 테스트 결과를 검증하는 단계 준비하는 과정, 저장하는 과정(테스트), 검증하는 과정 이여서 세단계로 나뉘는 것이다. @SpringBootTest 메인 애플리케이션 클래스에 추가하는 애너테이션인 @SpirngBootApplication이 있는 클래스를 찾고 그 클래스에 포함되..

스프링 부트 3로 백엔드 입문하기 TIL - 3장 : 스프링 부트 3 구조 이해하기

✍학습 키워드 스프링 부트 3 구조 살펴보기 스프링 부트에는 프레젠테이션, 비즈니스, 퍼시스턴스 계층이 있으며 이 계층들이 서로 통신하며 프로그램을 구성한다. (계층간에 서로 영향을 끼치지 못하되, 필요에 따라 소통한다) 프레젠테이션 계층은 HTTP 요청을 받고 비즈니스 계층으로 전송 비즈니스 계층은 모든 비즈니스 로직을 처리 퍼시스턴스 계층은 DB에 관련한 스토리지 관련 로직 처리 📝새로 배운 개념 프레젠테이션 계층 HTTP 요청을 받고 이 요청을 비즈니스 계층으로 전송하는 역할을 한다. 컨트롤러가 프레젠테이션 계층의 역할을 하며, 컨트롤러는 여러개가 있을 수 있다. 비즈니스 계층 모든 비즈니스 로직을 처리한다. 서비스가 비즈니스 계층의 역할을 한다. 비즈니스 로직이란 서비스를 만들기 위한 로직 웹 사..