전체 글 46

250506 공모전 회의 기록

오늘은 팀원분들과 공모전 주제를 확정지을 차례였다.주제는 역사로 잡고, 각자 노션에 적어온 아이디어를 바탕으로 어떤 기능을 넣을지 상세하게 논의했다.그 중에서 나의 아이디어(100년 전 과거 사진과 현재 사진 비교해서 띄우기)가 채택되어서 기뻤다.서로의 의견을 주고 받으면서 피드백할 것은 하고, 뺄 건 빼고. 아주 군더더기 없이 깔끔한 진행이 이어졌다.나도 의견을 많이 보태서 이런 저런 이야기들을 했다.이제 개발을 어떻게 할 지가 관건인데..절대 이 팀에 피해를 주고 싶지 않는데 나의 개발 실력이 그에 못 미칠까봐 너무나도 걱정이 많다.그치만 내가 할 수 있는 최선을 다해서 한층 배우고, 성장하는 기회가 되고 싶다.파이팅!

배열의 시간 복잡도

Point데이터에 자주 접근하거나 읽어야 하는 경우, 배열을 사용하면 좋은 성능을 낼 수 있다.하지만 배열은 메모리 공간을 충분히 확보해야 하기 때문에할당할 수 있는 메모리의 크기를 확인하고, 배열로 표현하려는 데이터가 너무 많으면 런타임에서 배열 할당에 실패할 수 있다.중간에 데이터 삽입이 많은지 확인해야 한다. 배열은 선형 자료구조이기 때문에 중간이나 처음에 데이터를 빈번하게 삽입하면 시간 복잡도가 높아져 시간초과가 발생할 수 있다는 점이다.또한, 원본 배열을 그대로 수정하지 않길 원한다면, clone()메서드를 사용하여 배열을 복사해서 사용하자. sort() 메서드 사용할 경우와 O(N²) 알고리즘 사용할 경우버블정렬은 1초가 걸리지만, sort() 메서드는 0.1초도 걸리지 않는다. 시간 차이가 ..

코딩테스트/etc 2025.04.10

코딩 테스트 필수 문법

Primitve(기본형), Reference(참조형) 타입레퍼런스 타입은 프리미티브 타입보다 연산 속도가 더 느리다. 앱실론(epsilon)자바는 float, double 등의 실수 를 부동소수점 방식을 사용하여 표기한다. 부동 소수형 데이터를 이진법으로 표현하기 때문에 표현 시, 오차가 발생할 수 있다. 이를 앱실로이라고 한다.코테에서 부동소수형 데이터를 다룰 땐, 이 앱실론을 생각하여 오류를 방지해야 한다.대부분의 언어가 하드웨어 수준에서 정해진 국제표준을 따르기 때문에, 0.1이나 0.2와 같은 소수를 정확하게 표현해주지 않는다.예를 들면 소수점 비교 시, == 연산자를 사용하면 예상과 다른 결과를 얻을 수 있다.정밀 계산이 필요하면 Bingdecimal, Decimal등의 정확한 수치 타입을 사용..

코딩테스트/etc 2025.04.09

시간 복잡도

가장 효율적으로 해결하는 알고리즘이 각 코테 문제에 존재한다.우리는 여러 알고리즘 중 당연히 문제를 빠르게 푸는 알고리즘을 선택해야 한다.그렇다면 어떤 것을 기준으로 알고리즘을 선택해야 할까? -> 바로 '시간 복잡도'를 보고 선정해야 한다. 시간 복잡도 시간 복잡도란, 알고리즘의 성능을 나타내는 지표로, 입력 크기에 대한 연산 횟수의 상한을 의미한다. 시간 복잡도는 낮으면 낮을 수록 좋다.입력크기는 쉽게 말해서, 알고리즘이 처리해야 할, 데이터 양이라고 생각하면 된다. 책장에 꽂혀있는 5권의 책을 정리해야 하는 문제라면, 이때의 입력 크기는 5가 된다. 1차원 배열 검색하기값을 가장 빨리 찾는 경우검색 시작 위치에 찾을 값이 바로 있는 경우이다. = 연산 비교 횟수가 최소임값을 가장 늦게 찾는 경우아예..

코딩테스트/etc 2025.04.09

블로그 화면 구성(feat. Thymeleaf)

Thymeleaf (타임리프)타임리프는 템플릿 엔진이다. 그럼 템플릿 엔진이란? 스프링 서버에서 데이터를 받아 우리가 보는 웹페이지, HTML상에 그 데이터를 넣어 보여주는 도구이다. 따라서 HTML과 함께 템플릿 엔진을 위한 문법을 살짝 섞어서 사용해야 한다.타임리프 표현식표현식설명${...}변수의 값 표현식#{...}속성 파일 값 표현식@{...}URL 표현식*{...}선택한 변수의 표현식. th:object에서 선택한 객체에 접근 타임리프 문법표현식설명예제th:text텍스트를 표현th:text=${person.name}th:each컬렉션을 반복할 때 사용th:each="person:${persons}"th:if조건이 true인 때만 표시th:if="${person.age}>=20"th:unless조..

두 수의 합

문제 설명0 이상의 두 정수가 문자열 a, b로 주어질 때, a + b의 값을 문자열로 return 하는 solution 함수를 작성해 주세요.제한사항1 ≤ a의 길이 ≤ 100,0001 ≤ b의 길이 ≤ 100,000a와 b는 숫자로만 이루어져 있습니다.a와 b는 정수 0이 아니라면 0으로 시작하지 않습니다.입출력 예a b result"582""734""1316""18446744073709551615""287346502836570928366""305793246910280479981""0""0""0"나의 답안// 정수형으로 푠할 수 있는 값의 한계로 인해 더 큰 값을 다뤄야 할 경우 BigInteger클래스를 사용한다.long 타입보다 훨씬 큰 값을 다룰 수 있다.// BigInteger에 정의된 정수형..

코딩테스트 준비

데이터의 흐름이나 (문제)구성을 먼저 파악할 것만약 데이터의 삽입과 삭제가 빈번하게 일어나는 상황에서 최댓값 혹은 최솟값을 반복하여 구해야 한다면 힙 자료구조를 고려하는 게 좋을 수 있다.데이터가 50개 미만이고, 입력값을 깔끔하게 정리하기 어렵다면 하드 코딩을 고려하기도 한다.데이터의 값의 차이가 크면 데이터 값 자체를 배열의 인덱스로 활용하는 건 피하는 것이 좋다. (ex, {1, 10100, 5000}으로 데이터가 구성되어 있을 경우, 나머지 2~4999등의 공간은 사용하지 않는 공간이지만 메모리가 할당되므로 낭비이기 때문) 의사코드 작성하기세부 구현까지는 작성하지 말기.ex) 국어, 영어 수학 점수를 입력받는다 (O)ex) 크기가 256 바이트인 문자열 배열을 3개 선언해서 표준 입력으로 국어, ..

코딩테스트/etc 2025.04.01

블로그 기획하고 API 만들기 - 블로그 글 조회(개별 글), 삭제, 수정

블로그 글 전체 목록을 조회하는 API를 만들었으니, 이제는 글 하나의 상세 정보를 조회하는 api를 구현해보자.  블로그 글 조회 API 구현서비스 메서드 코드 작성 1. BlogService.java에 글 하나를 조회하는 메서드인 findById()메서드를 추가한다. 이 메서드는 DB에 저장되어 있는 ID를 이용하여 글을 조회한다. /** 메서드: DB에 저장된 ID를 사용하여 개별 글을 조회하는 메서드* param: Long id (DB의 번호)* return: Article 엔티티 반환, 없으면 IllegalAccessException 예외 발생* */public Article findById(long id) { return blogRepository.findById(id) ..

블로그 기획하고 API 만들기 - 블로그 글 목록 조회

글 추가하는 API를 만들었다. 이제는 추가한 글을 조회할 수 있는 API를 만들어보자.서비스 메서드 코드 작성 BlogService.java 파일에 db에 저장되어 있는 글을 모두 가져오는 findAll()메서드 추가/** 메서드: DB에 저장된 모든 글들을 조회하는 메서드**/public List findAll(){ return blogRepository.findAll();} /api/articles GET요청이 오면 글 목록을 조회할 findAllArticles() 메서드를 작성해보자.1. 응답을 위한 DTO 작성, DTO디렉터리에 ArticleReponse.java 파일 생성@Getterpublic class ArticleResponse { // 제목 private final St..

배열 만들기 4

제목: 배열 만들기 4문제 설명정수 배열 arr가 주어집니다. arr를 이용해 새로운 배열 stk를 만드려고 합니다.변수 i를 만들어 초기값을 0으로 설정한 후 i가 arr의 길이보다 작으면 다음 작업을 반복합니다.만약 stk가 빈 배열이라면 arr[i]를 stk에 추가하고 i에 1을 더합니다.stk에 원소가 있고, stk의 마지막 원소가 arr[i]보다 작으면 arr[i]를 stk의 뒤에 추가하고 i에 1을 더합니다.stk에 원소가 있는데 stk의 마지막 원소가 arr[i]보다 크거나 같으면 stk의 마지막 원소를 stk에서 제거합니다.위 작업을 마친 후 만들어진 stk를 return 하는 solution 함수를 완성해 주세요.제한사항1 ≤ arr의 길이 ≤ 100,0001 ≤ arr의 원소 ≤ 100..