전체 글
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbiskPn%2FbtrQEIB4XPL%2FNk37yuf78EL1pnvfjlt4p0%2Fimg.png)
[TIL] 웹의 동작 개념, CSS 모바일, DOMContentLoaded
✍ Today I Learned 항해99를 본격적으로 시작하기에 앞서 사전에 제공되는 강의를 통해 워밍업을 해보려 한다. 다음 내용은 웹개발 종합반 1주차 ~ 2주차에 해당한다. 이전에 들었던 강의이기 때문에 다시 한번 짚고 넘어갔으면 하는 조각 지식 위주로 정리했다. 웹의 동작 개념 브라우저가 API에 요청을 보내고, 받은 HTML 파일을 받아서 그려준다. HTML만 받느냐? 데이터만 내려줄 때가 더 많다. → JSON형식 CSS 모바일 가로길이 설정 꿀팁 화면 폭 500px 전에는 95%로 맞추다가, 넘으면 500px으로 보여줘 라고 할 수 있다면? width: 95%; max-width: 500px; 이벤트 리스너는 죄가 없다 uncaught typeerror cannot read propertie..
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FolpU4%2FbtrShHuO7qy%2FQq7ucYoKTKYgwem6FFYmEk%2Fimg.png)
[Spring] 스프링 웹 개발의 3가지 방법
스프링 웹 개발의 3가지 방법 정적 컨텐츠 : like WELCOME pages MVC와 템플릿 엔진 : jsp, php → HTML을 서버에서 프로그래밍해서 동적으로 내려줌 API : json이라는 데이터 포맷으로 클라이언트한테 데이터 전달 정적 컨텐츠 resources/static/hello-static.html 인텔리제이 파일 생성 단축키 Ctrl + Alt + Insert 정적 컨텐츠 입니다. 실행해보자 run을 돌리고 http://localhost:8080/hello-static.html로 접속하여 확인 정적 컨텐츠는 어떻게 동작하는 걸까? 웹 브라우저에 localhost:8080/hello-static.html을 입력 내장 톰캣 서버가 요청을 받아서 스프링한테 전달 스프링은 먼저 컨트롤러에 있..
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrUkPK%2FbtrOscqxGaA%2F965zup4JkGayi6jqNzvgE1%2Fimg.png)
[Java/백준] 주몽 #1940
문제 풀이 (1) 문제 분석하기 두 재료의 번호의 합, 크기를 비교하므로 먼저 정렬하고 시작 N의 최대 범위가 15,000이므로 O(nlogn) 시간 복잡도 알고리즘(=정렬 알고리즘)을 사용해도 문제없음 정렬한 다음 양쪽 끝의 위치를 투 포인터로 지정해 접근(데이터가 유니크하고 한 번 쓰면 없어진다? → 투 포인터) (2) 손으로 풀어 보기 재료 데이터를 A[N]에 저장한 후 오름차순으로 정렬 투 포인터 i, j를 양쪽 끝에서부터 포인터 이동 원칙에 맞게 탐색 2단계를 i와 j가 만날 때까지 반복, 반복이 끝나면 count 출력 (N번만에 탐색이 끝남, 투 포인터는 시간 복잡도에 영향이 거의 없음) // 투 포인터 이동 원칙 A[i] + A[j] > M : j--; // 번호의 합이 M보다 크면 큰 번호..
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbFZsEu%2FbtrNwF976kz%2F97BnjEzBBMKCxXRfjeC731%2Fimg.png)
[Java/백준] 연속된 자연수의 합 구하기 #2018
문제 풀이 (1) 문제 분석하기 N의 최댓값(10,000,000)이 매우 크므로 O(n)의 시간 복잡도 알고리즘 사용해야 함 → 투 포인터! 시작 인덱스와 종료 인덱스를 투 포인터로 지정하여 접근 (2) 손으로 풀어 보기 N값을 입력받아 변수에 저장하고, 사용할 변수(sum, count, start_index, end_index) 모두 1로 초기화 (count를 1로 초기화하는 이유는? 연속된 수가 자기 자신인 경우를 미리 포함한 것) 투 포인터 이동 원칙을 활용해 배열의 끝까지 탐색하면서 합이 N이 될 경우의 수를 구함 2단계를 end_index가 N이 될 때까지 반복 포인터가 이동할 때마다 현재의 총합과 N을 비교해 값이 같으면 count를 1만큼 증가 // 투 포인터 이동 원칙 sum > N : s..
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcSVc9m%2FbtrNvMtOnSA%2FZthhDW9T6wv1guH1FXke41%2Fimg.png)
[Java/백준] 구간 합 구하기 #11659
문제 풀이 (1) 문제 분석하기 수의 개수 N과 합을 구해야 하는 횟수 M은 최대 100,000 임 최악의 경우, 1억 회 이상 연산을 해야 하므로 1초 안에 계산을 끝낼 수 없음 → 구간 합 사용! (2) 손으로 풀어보기 // 합 배열 공식 S[i] = S[i-1] + A[i] // 구간 합 공식 S[j] - S[i-1] N개의 수를 입력받으면서 바로 합 배열 생성 i부터 j까지 구간 합 공식으로 정답 출력 배열의 index는 0부터, 합 배열의 index는 1부터 시작한다는 것에 주의하기! (3) 슈도코드 작성하기 N(숫자의 개수), M(질의 개수) 저장하기 for(1부터 N 까지) { 합 배열 생성하기(S[i] = S[i - 1] + A[i] } for(0부터 M 전까지) { 질의 범위 받기(i ~..
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FDTdVF%2FbtrNvr4oypo%2FFs0qyYzD3UKhlKL0gKlAuK%2Fimg.png)
[TIL] 알고리즘 구간 합
✍ Today I Learned 구간 합 구간 합이란? 합 배열을 이용하여 시간 복잡도를 더 줄이기 위해 사용하는 특수한 목적의 알고리즘 합 배열 구하기 // 배열 A가 있을 때 합 배열 S의 정의 S[i] = A[0] + A[1] + A[2] + ... + A[i-1] + A[i] // A[0]부터 A[i]까지의 합 // 합 배열을 만드는 공식 S[i] = S[i-1] + A[i] 이렇게 합 배열을 미리 구해놓으면 기존 배열의 일정 범위의 합을 구하는 시간 복잡도가 O(N)에서 O(1)로 감소 구간 합 구하기 // 구간 합 구하는 공식 S[j] - S[i-1] // i에서 j까지 구간 합 // A[2] ~ A[5] 구간 합을 합 배열로 구하는 과정 S[5] = A[0] + A[1] + A[2] + A[..
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbpoBeB%2FbtrNwoSGcct%2Ff4hVxFZC2RwDAYTynQK9jK%2Fimg.png)
[Java/백준] 평균 구하기 #1546
문제 풀이 (1) 문제 분석하기 모든 점수를 입력받은 후, 최고점 별도로 저장해야 함 최고점으로 다시 계산해야 하는 변환 점수는 계산식을 정리하면 한 번에 평균을 구할 수 있음 ( A / M * 100 + B / M * 100 + C / M * 100 ) / 3 = ( A + B + C ) * 100 / M / 3 (2) 손으로 풀어보기 모든 점수를 1차원 배열에 저장 최고 점수와 점수의 총합을 구함 '총합 * 100 / 최고 점수 / 과목 수'를 계산 (3) 슈도코드 작성하기 변수 N에 과목의 수 입력받기 길이가 N인 1차원 배열 A[] 선언하기 for(A[] 길이만큼) { A[i]에 각 점수 저장하기 } for(A[] 길이만큼) { 변수 max에 최고 점수, 변수 sum에 총합 저장하기 } sum *..
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FvLXs3%2FbtrNrU5h17H%2FCP9FKpov7XEQA8s780mwQK%2Fimg.png)
[Java/백준] 숫자의 합 #11720
💡 바로 로직을 구현하거나 코딩하지 말고, 문제의 내용과 조건을 꼼꼼히 분석하고 방향 설정하기! 문제 풀이 (1) 문제 분석하기 N의 범위가 1부터 100까지이므로 int형, long형과 같은 숫자형으로 담을 수 없음 먼저 문자열 형태로 받아서 문자 배열로 변환 후, 숫자형으로 변환하여 더해야 함 문자열을 숫자형으로 변환하기 위해 toCharArray 함수 사용(문자열을 char형 배열로 변환) char형을 int형으로 변환하기 위해 아스키코드를 이해해야 함(문자 '1'과 숫자 1은 48 차이 / 아스키코드 48 = '0') (2) 손으로 풀어보기 입력된 데이터를 String형으로 저장 String형으로 입력받은 값을 char [] 형으로 변환 → toCharArray 이용 인덱스 0부터 끝까지 배열을 ..