전체 글
[TIL] 알고리즘 배열과 리스트(Java)
✍ Today I Learned 배열과 리스트 배열 메모리의 연속 공간에 값이 채워져 있는 형태의 자료구조 인덱스를 사용하여 값에 접근 선언한 자료형의 값만 저장 가능 배열의 크기는 선언할 때 지정, 한 번 선언하면 크기를 늘리거나 줄일 수 없음 새로운 값을 삽입하거나 특정 인덱스에 있는 값을 삭제하려면 해당 인덱스 주변에 있는 값을 이동시켜야함 구조가 간단하므로 코딩 테스트에서 많이 사용 리스트 값과 포인터를 묶은 노드라는 것을 포인터로 연결한 자료구조 인덱스가 없으므로 접근하려면 Head 포인터부터 순서대로 접근 → 값에 접근하는 속도가 느림 포인터로 연결되어 있어 데이터를 삽입하거나 삭제하는 연산 속도 빠름 선언할 때 별도의 크기 지정 필요X, 크기가 변하기 쉬운 데이터 다룰 때 적절 포인터를 저장..
[TIL] 알고리즘 디버깅(Java)
✍ Today I Learned 디버깅은 왜 중요할까? 디버깅이란? 프로그램에서 발생하는 문법 오류나 논리 오류를 찾아 바로잡는 과정 알아두기만 하는 것이 아니라 문제를 풀면서 반드시 해야 하는 과정 디버깅하는 법 디버깅하고자 하는 줄에 중단점 설정(여러 개 가능) IDE의 디버깅 기능 실행 → 코드를 1줄씩 실행(step over) or 다음 중단점까지 실행 추적할 변숫값을 지정하거나 원하는 수식을 입력해 의도하는 대로 작동하는지 파악 디버깅 활용 사례 코딩 테스트를 진행하며 실수하기 쉬운 4가지 오류 변수 초기화 오류 반복문에서 인덱스 범위 지정 오류(로그를 사용하면 계속 다시 실행해야 하기 때문에 시간이 많이 걸림) 잘못된 변수 사용 오류 자료형 범위 오류(이건 답이 음수가 나올 수 없는데..? →..
[TIL] 알고리즘의 시간 복잡도(Java)
✍ Today I Learned 시간 복잡도 표기법 알고리즘에서 시간 복잡도는 주어진 문제를 해결하기 위한 연산 횟수 일반적으로 1억 번의 연산 = 1초의 시간으로 간주하여 예측 시간 복잡도를 정의하는 3가지 유형 빅-오메가 : 최선일 때(best case)의 연산 횟수를 나타낸 표기법 (1번) 빅-세타 : 보통일 때(average case)의 연산 횟수를 나타낸 표기법 (2/n번) 빅-오 : 최악 일 때(worst case)의 연산 횟수를 나타낸 표기법 (n번) 코딩 테스트에서는 빅-오 표기법을 기준으로 수행 시간을 계산하는 것이 좋다. 왜? 모든 테스트 케이스를 통과해야 하기 때문 시간 복잡도 활용 알고리즘 선택의 기준으로 사용하기 문제에서 주어진 시간제한과 데이터 크기를 바탕으로 어떤 정렬 알고리즘..
[Spring] 스프링 프로젝트 환경설정
스프링(Spring) 공부는 이렇게 해야 한다 스프링 프로젝트 생성 스프링 부트로 웹 서버 실행 회원 도메인 개발 웹 MVC 개발 DB 연동- JDBC, JPA, 스프링 데이터 JPA 테스트 케이스 작성 프로젝트 생성 윈도우(Windows)에서 인텔리제이(IntelliJ) 설치 JetBrains 계열의 IntelliJ는 이곳에서 무료인 Community 버전으로 설치한다. Spring에 체크가 되어 있지 않지만, Spring 라이브러리가 장착되어 있지 않다는 의미일 뿐 개발하는 데에는 문제없다. 스프링 이니셜라이즈(spring initializr)로 프로젝트 생성 스프링 부트 기반으로 프로젝트를 만들어주는 사이트(https://start.spring.io/) maven? gradle이란? 필요한 라이브러..
[TIL] AWS 서버에 도메인 연결하기(feat.가비아)
✍ Today I Learned 도메인을 구매한다는 것은? 네임서버를 운영해주는 업체에 IP와 도메인 매칭 유지비를 내는 것이다. AWS EC2 프리티어 서버에서 열심히 돌아가고 있는 프로젝트에 도메인을 달아주자! 다양한 업체가 있지만, 가비아에서 도메인을 구입할 것이다. 도메인 구입 먼저 원하는 도메인이 이미 등록되어 있는 도메인인지 확인한다. 최대한 프로젝트 이름과 같은 것으로 구매하는 것이 좋겠쥬? .shop이 붙은 도메인은 현재 1년에 500원으로 할인 중이다! 도메인 설정 My가비아 > 해당 도메인의 관리 버튼 클릭 DNS 정보 > 도메인 연결 설정 클릭 해당 도메인의 DNS 설정에서 레코드 수정 클릭 호스트에 @, 값/위치에 IP주소를 입력 확인 > 저장 버튼 클릭 도메인 연결 완료 이제 해당..
[Spring] 스프링 Security 한글 깨짐 해결 방법
문제 상황 게시판에서 POST 요청으로 글 작성 시 한글이 깨지는 현상이 나타났다. 아니 어제까지도 잘 됐는데 갑자기..? 전체 페이지가 그런 것은 아니었다. 작성되어 있던 글은 잘만 나오는데 새롭게 작성하는 글은 모두 저런 형태로 출력되었다. 자, 그럼 어디서부터 잘못된 건지 찾아보도록 하자. 먼저 데이터베이스 쪽을 살펴보았다 출력만 그런 게 아니라 애초에 DB에 들어갈 때 이렇게 되는구나? 어디서 깨지는 거야 도대체 Controller에서 로그를 찍어보니 이미 한글이 깨진 채로 전송이 된다는 걸 알 수 있었다. 해결 방법 1. 데이터를 가장 먼저 마주하는 Controller의 문제일까? RequestMapping 부분을 다음과 같이 수정했다. → 실패 @RequestMapping(value = "/p..
[TIL] JSP 미니 프로젝트 기획
✍ Today I Learned Spring을 학습하기 전, jsp에서 최대한 Spring의 구조를 흉내내어 CRUD, 로그인/로그아웃, DB연결, 비동기 통신, 파일첨부 등을 구현해보았다. 배운 것들을 이용하여 간단한 프로젝트를 만들어보자! [JSP 프로젝트 기획] 어떤 서비스를 만들어볼까? 펜션 예약 사이트, 개인 쇼핑몰, 오토 주문 시스템, 커뮤니티 게시판 등 많은 후보가 있었지만, 나의 관심도가 높고 꾸준히 이용중인 서비스를 직접 만들어보는 것도 재밌겠다는 생각이 들었다. 내가 애정하는 인테리어 플랫폼 오늘의집을 벤치마킹한 쇼핑몰 + 커뮤니티로 결정! [기능 명세서] 어떤 기능들이 필요할까? 구현해야하는 기능들을 구체화하여 한 눈에 보기 위해 기능 명세서를 작성하였다. 1. 회원 회원가입 회원 종..
[Java/코드업] 1008 ~ 1012 유니코드, charAt(), printf() 형식 지정자
1008 문제 풀이 표에 나와있는 유니코드 중 가장 얇은 선을 사용해야 한다! public class Main{ public static void main(String[] args){ System.out.println("\u250C\u252C\u2510"); System.out.println("\u251C\u253C\u2524"); System.out.println("\u2514\u2534\u2518"); } } 1010 문제 풀이 Scanner를 이용하여 정수를 입력받고 그대로 출력한다. import java.util.Scanner; public class Main{ public static void main(String[] args){ Scanner sc = new Scanner(System.in);..