📝 TIL

    [TIL] 항해99 입학시험

    ✍ Today I Learned 항해99 입학시험 입학시험은 미리 예고했던 대로 웹개발 종합반 강의 정도의 난이도였다. 웹개발 종합반 4주차에 진행했던 “화성 땅 사기” 프로젝트에 가격 표시 기능을 추가하는 것이 문제로 나왔다. DB에서 받아온 "n평" 중 '평'을 자르고 정수로 타입 변환한 뒤, 500원을 곱하여 빠르게 제출하였다. 다른 분들의 풀이 방식을 들어보니 크게 2가지로 나뉘었다. 프론트단에서 연산하여 출력 가격을 DB에 저장하고, 서버에서 불러온 값을 출력 나는 1번의 방식을 택했다고 볼 수 있는데, 어떤 방식이 더 효율적 일지 궁금해졌다. 효율성을 고민할 땐 극단적인 예시를 떠올려야 한다. 'list의 개수가 1억 개라면?' 무려 1억 번의 연산을 리로딩될 때마다 해야 한다. 결론적으로 2..

    [TIL] Java 연산자의 종류, 우선순위, 타입 변환

    ✍ Today I Learned 버벅거렸던 첫날에 비해 시간이 많이 단축되었다. 익숙해지는 중! 연산을 진행하면서 타입 변환이 되는 부분을 꼼꼼하게 숙지해보자. 03 연산자 03-1 연산자와 연산식 시작하기 전에 연산자(operator): 연산에 사용되는 표시나 기호 피연산자(operand): 연산자와 함께 연산되는 데이터 연산식(expression): 연산자와 피연산자를 이용하여 연산의 과정을 기술한 것 연산식은 반드시 하나의 값을 산출하며, 값 대신에 연산식을 사용할 수 있다. 연산의 방향과 우선순위 단항, 이항, 삼항 연산자 순으로 우선순위를 가진다. 산술, 비교, 논리, 대입 연산자 순으로 우선순위를 가진다. 단항, 부호, 대입 연산자를 제외한 모든 연산의 방향은 왼쪽에서 오른쪽이다.(→) 복잡한..

    [TIL] Java 개발 환경 구축, 변수와 타입

    ✍ Today I Learned 항해99 시작! 💪 99일간의 여정 중, 첫 주는 pre-onboarding 기간으로 주특기가 될 언어의 문법을 팀원들과 공부한다. 기초적인 내용이지만, 그동안 알 것 같은 느낌만 있고 실제로 설명하긴 어려웠던 개념이나 정의를 다시 곱씹어 보려 한다! 내가 헷갈렸던 내용, 다시 보면 좋을 내용 위주로 정리해 보았다😉 01 자바 시작하기 01-1 프로그래밍 언어와 자바 시작하기 전에 기계어는 사람의 언어와 다르기 때문에 다리 역할의 프로그래밍 언어 필요 프로그래밍 언어로 작성한 파일 == 소스파일 소스파일은 컴퓨터가 바로 이해할 수 없기 때문에 컴파일 과정을 통해 기계어 파일로 번역한 후 컴퓨터에서 사용 자바의 특징 모든 운영체제에서 실행 가능 ex) 윈도우에서 개발된 프로..

    [TIL] Python 문자열 제거, pymongo 역정렬, MongoDB에 id 부여

    ✍ Today I Learned 2022.10.29 - [TIL] 웹의 동작 개념, CSS 모바일, DOMContentLoaded 웹개발 종합반 1주차 ~ 2주차 강의에 이어 3주차 ~ 4주차 강의를 듣고 정리한 내용이다. 사용 경험이 적은 언어(Python)와 데이터베이스(MongoDB)였지만 내가 알고 있는 것들과 비교해보는 재미가 있었다! 특정 문자열 대체, 제거 replace() string.replace(oldvalue, newvalue, count) 차례대로 찾을 값, 바꿀 값, 바꿀 횟수(옵션)를 입력하면 해당 string에서 특정 문자열을 대체한다. 문자열 및 공백 제거 strip() string.strip(characters) 인자로 전달받은 문자를 String의 왼쪽과 오른쪽에서 제거한..

    [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..

    [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[..

    [TIL] 알고리즘 배열과 리스트(Java)

    ✍ Today I Learned 배열과 리스트 배열 메모리의 연속 공간에 값이 채워져 있는 형태의 자료구조 인덱스를 사용하여 값에 접근 선언한 자료형의 값만 저장 가능 배열의 크기는 선언할 때 지정, 한 번 선언하면 크기를 늘리거나 줄일 수 없음 새로운 값을 삽입하거나 특정 인덱스에 있는 값을 삭제하려면 해당 인덱스 주변에 있는 값을 이동시켜야함 구조가 간단하므로 코딩 테스트에서 많이 사용 리스트 값과 포인터를 묶은 노드라는 것을 포인터로 연결한 자료구조 인덱스가 없으므로 접근하려면 Head 포인터부터 순서대로 접근 → 값에 접근하는 속도가 느림 포인터로 연결되어 있어 데이터를 삽입하거나 삭제하는 연산 속도 빠름 선언할 때 별도의 크기 지정 필요X, 크기가 변하기 쉬운 데이터 다룰 때 적절 포인터를 저장..

    [TIL] 알고리즘 디버깅(Java)

    ✍ Today I Learned 디버깅은 왜 중요할까? 디버깅이란? 프로그램에서 발생하는 문법 오류나 논리 오류를 찾아 바로잡는 과정 알아두기만 하는 것이 아니라 문제를 풀면서 반드시 해야 하는 과정 디버깅하는 법 디버깅하고자 하는 줄에 중단점 설정(여러 개 가능) IDE의 디버깅 기능 실행 → 코드를 1줄씩 실행(step over) or 다음 중단점까지 실행 추적할 변숫값을 지정하거나 원하는 수식을 입력해 의도하는 대로 작동하는지 파악 디버깅 활용 사례 코딩 테스트를 진행하며 실수하기 쉬운 4가지 오류 변수 초기화 오류 반복문에서 인덱스 범위 지정 오류(로그를 사용하면 계속 다시 실행해야 하기 때문에 시간이 많이 걸림) 잘못된 변수 사용 오류 자료형 범위 오류(이건 답이 음수가 나올 수 없는데..? →..