일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 생활코딩
- 스프링부트
- 게임개발동아리
- UNICON2023
- 인프라
- EC2
- UNICON
- 개발공부
- Spring boot
- Route53
- 전국대학생게임개발동아리연합회
- 백엔드개발자
- 티스토리챌린지
- 42서울
- spring ai
- 라피신
- 체크인미팅
- 프롬프트엔지니어링
- 오블완
- 프로그래밍
- CICD
- NAT gateway
- Redis
- bastion host
- AWS
- UNIDEV
- 도커
- 캡스톤디자인프로젝트
- openAI API
- 프리티어
- Today
- Total
목록Study (112)
Hyun's Wonderwall
1655번: 가운데를 말해요https://www.acmicpc.net/problem/1655 문제백준이는 동생에게 "가운데를 말해요" 게임을 가르쳐주고 있다. 백준이가 정수를 하나씩 외칠때마다 동생은 지금까지 백준이가 말한 수 중에서 중간값을 말해야 한다. 만약, 그동안 백준이가 외친 수의 개수가 짝수개라면 중간에 있는 두 수 중에서 작은 수를 말해야 한다.예를 들어 백준이가 동생에게 1, 5, 2, 10, -99, 7, 5를 순서대로 외쳤다고 하면, 동생은 1, 1, 2, 2, 2, 2, 5를 차례대로 말해야 한다. 백준이가 외치는 수가 주어졌을 때, 동생이 말해야 하는 수를 구하는 프로그램을 작성하시오.입력첫째 줄에는 백준이가 외치는 정수의 개수 N이 주어진다. N은 1보다 크거나 같고, 100,00..
정렬 알고리즘들과 정의정렬 알고리즘정의버블데이터끼리 인접 요소끼리 비교하고, swap 연산을 수행하며 졍렬하는 방식선택대상에서 가장 크거나 작은 데이터를 찾아 선택하는 과정을 반복하면서 정렬하는 방식삽입대상을 선택해 정렬된 영역에서 선택 데이터의 적절한 위치를 찾아 삽입하면서 정렬하는 방식퀵pivot 값을 선정해 해당 값을 기준으로 정렬하는 방식병합(합병)이미 정렬된 부분 집합들을 효율적으로 병합해 전체를 정렬하는 방식힙최대 힙 트리나 최소 힙 트리를 구성해 정렬을 하는 방식 (내림차순 정렬-최소 힙 / 오름차순 정렬-최대 힙)기수데이터의 자릿수를 바탕으로 비교해 데이터를 정렬하는 방식 05-1. 버블 정렬버블 정렬: 두 인접한 데이터의 크기를 비교해 정렬. 시간 복잡도 O(n^2)으로 다른 알고리즘보다..
"실전에서 TDD하기(카카오페이 기술 블로그)"를 읽고 정리한 내용입니다. https://tech.kakaopay.com/post/implementing-tdd-in-practical-applications/ 실전에서 TDD하기 | 카카오페이 기술 블로그TDD가 무엇인지 모르는 사람은 없습니다. 그런데 왜 하는 사람은 얼마 없을까요?tech.kakaopay.com QA, PM 뿐 아니라 개발자도 품질 보장을 위한 노력을 해야 한다. 릴리즈된 애플리케이션에는 지속적으로 새로운 기능 추가가 이루어지게 된다.기존 코드를 추가/삭제/수정할 때, 기존에 있던 동작이 변하지 않았음을 증명해야 한다. 어떻게?매번 애플리케이션을 구동시켜 직접 모든 기능을 일일이 확인하기는 쉽지 않다. -> 테스트 코드 작성이 중요. ..
04-1. 배열과 리스트배열: 메모리의 연속 공간에 값이 채워져 있는 형태의 자료구조.- 값을 인덱스를 통해 참조(값에 바로 접근 가능. 새로운 값 삽입/삭제 어렵.)- 배열의 크기는 선언할 때 지정, 한 번 선언하면 크기를 늘리거나 줄일 수 X.- 선언한 자료형의 값만 저장 가능.리스트: 값과 포인터를 묶은 노드를 포인터로 연결한 자료구조- 인덱스가 없으므로 값에 접근하려면 Head 포인터부터 순서대로 접근해야 (값에 접근하는 속도 느림)[11720번: 숫자의 합] / 브4import java.io.*;import java.util.*;public class Main{ public static void main(String[] args) throws IOException { BufferedRea..
11장: 동시성아이템 82. 스레드 안전성 수준을 문서화하라'한 메서드를 여러 스레드가 동시에 호출할 때 그 메서드가 어떻게 동작하느냐': 해당 클래스의 클라이언트에게 중요한 정보. 가정해서 사용했다가 틀리면 심각한 오류로 이어짐.모든 클래스가 자신의 스레드 안전성 정보를 명확히 문서화해야 한다.synchronized 한정자는 문서화와 관련X ( 'API 문서에 synchronized 한정자가 보이는 메서드는 스레드 안전하다?' -> X. javadoc이 기본 옵션에서 생성한 API문서에는 synchronized 한정자가 포함되지 않는다. 메서드 선언에 synchronized 한정자를 선언할지는 구현 이슈일 뿐 API에 속하지 않아, 따라서 이것만으로 메서드가 스레드 안전하다고 믿기 어렵다.) 멀티스레드..
9장: 일반적인 프로그래밍 원칙아이템 64. 객체는 인터페이스를 사용해 참조하라인터페이스를 타입으로 사용하는 습관을 길러두면 프로그램이 훨씬 유연해질 수 있다. 나중에 구현 클래스를 교체하기 쉬움.- 구현 타입을 바꾸려 하는 동기는? 새 구현 타입이 원래 것보다 성능이 좋거나 신기능을 제공...적합한 인터페이스가 없다면 (당연히 클래스로 참조해야 하는 상황) -> 클래스의 계층구조 중 필요한 기능을 만족하는 가장 상위의 클래스를 타입으로 사용하자. 아이템 65. 리플렉션보다는 인터페이스를 사용하라리플렉션 기능을 이용하면 프로그램에서 임의의 클래스에 접근 가능. 컴파일 당시 존재하지 않던 클래스도 이용할 수 있다.- (단점: 컴파일타임 타입 검사 이점 누릴 수 x, 코드가 지저분하고 장황해짐, 성능 떨어짐..
8장 메서드아이템 55. 옵셔널 반환은 신중히 하라감나옵셔널은 예외 검사와 취지가 비슷. 결과가 없을 수 있으며, 클라이언트가 이 상황을 특별하게 처리해야 할 때 사용한다.반환값 이외의 용도로 쓰는 경우는 드물다.Stream>. Optional의 stream().컨테이너 타입은 옵셔널로 감싸면 안 된다. 빈 List를 반환하는 게 좋다.옵셔널 반환에는 성능 저하가 뒤따라, 성능에 민감한 메서드라면 null을 반환하거나 예외를 던지는 게 나을 수 있다.아이템 56. 공개된 API 요소에는 항상 문서화 주석을 작성하라API를 올바르게 문서화하려면 공개된 모든 클래스, 인터페이스, 메서드, 필드 선언에 문서화 주석을 ㅏㄷㄹ아야 한다.메서드용 문서화 주석: 해당 메서드와 클라이언트 사이의 규약을 명료히 기술요약..
7장 람다와 스트림아이템 46. 스트림에서는 부작용 없는 함수를 사용하라스트림 패러다임의 핵심: 계산을 일련의 변환으로 재구성.- 각 변환 단계는 가능한 한 이전 단계의 결과를 받아 처리하는 순수 함수여야 한다. - 순수 함수: 오직 입력만이 결과에 영향을 주는 함수. 다른 가변 상태를 참조하지 않고, 함수 스스로도 다른 상태를 변경하지 x - 이렇게 하려면 스트림 연산에 건네지는 함수 객체가 모두 side effect이 없어야 한다.forEach 연산은 스트림 계산 결과를 보고할 때만 사용하고, 계산 자체에 쓰지 말자.- collect: 축소 전략을 캡슐화한 블랙박스 객체. 스트림의 원소들을 객체 하나에 취합함. 수집기가 생성하는 객체는 일반적으로 컬렉션.- 수집기를 사용하면 스트림의 원소를 손..