1. 객체 지향이란?OOP(Object-Oriented Programming): 객체 지향 프로그래밍컴퓨터 프로그램을 '명령어의 목록'으로 보기 보단, 여러 개의 독립된 단위인 '객체'들의 모임으로 파악하고자 하는 것프로그램에 변화가 생기면 '객체'를 갈아끼우면 되기 때문에 프로그램이 유연하고 변경하기 쉬움주로 대규모 소프트웨어 개발에 많이 사용됨 각 개체는 서로 메시지를 주고 받으며 데이터를 처리하는 방식으로 협력함요청하는 객체는 클라이언트, 응답하는 객체는 서버로 볼 수 있음혼자 있는 객체는 없으며, 이 수 많은 클라이언트와 서버 객체들은 서로 협력 관계를 가짐서버인 객체가 클라이언트가 될 수도 있음 절차 지향 프로그래밍은 데이터 위에서 동작하는 함수를 작성하는 데에 집중하는 반면, 객체 지향 프로그..
전체 글
https://www.acmicpc.net/problem/22105 × 5 크기의 숫자판이 존재하고, 각 칸에는 0부터 9까지의 숫자가 적혀있다. 임의의 칸에서 시작해서, 인접한 네 방향으로 다섯 번 이동하면서 각 칸에 적힌 숫자를 붙여 6자리의 수를 만든다. 만들 수 있는 서로 다른 6자리의 수의 개수를 구하는 문제다. 문제 탐색하기- 문제에서 구해야 하는 최종 정답은 무엇인지 탐색한 과정- 그 정답을 구하기 위해 어떻게 코드를 구현해야 할지 고민한 과정- 문제에 들어오는 범위를 파악하며 어떤 알고리즘을 쓸 수 있을지 고민해 가는 과정ex. 가능한 시간 복잡도, 알고리즘 선택가능한 시간 복잡도임의의 시작 위치 선택: 5 × 5인접한 네 방향으로 다섯 번 이동: 4 × 4 × 4 × 4 × 4 dfs로 ..
🐛이슈- 발생한 오류 copy & paste- 오류가 발생한 상황 간략히 설명작업 중이던 내용을 기존 브랜치에 커밋하고 싶지 않아서 새로운 브랜치를 만들어 작업하고 있었음 (굳이굳이...)작업이 끝나고 git add 명령어와 git commit 명령어는 정상적으로 돌아가는 걸 확인했지만, git push origin ... 명령어는 'Everything up-to-date'라는 문구가 뜨며 원격 저장소에 올라갔는지 확인할 수 없었음원격 저장소를 확인해봤지만 변화가 없었고, 'compare & pull request'도 뜨지 않음 😓원인과 해결방안- 오류가 발생한 원인 간략히 설명- 해결방안 설명git push origin develop 명령어는 로컬 저장소의 develop 브랜치에서 원격 저장소의 ..
https://www.acmicpc.net/problem/1182N개의 정수로 이뤄진 수열이 있을 때, 크기가 양수인 부분수열 중 그 수열의 원소를 모두 더한 값이 S가 되는 부분수열의 개수를 구하는 문제다. 문제 탐색하기- 문제에서 구해야 하는 최종 정답은 무엇인지 탐색한 과정- 그 정답을 구하기 위해 어떻게 코드를 구현해야 할지 고민한 과정- 문제에 들어오는 범위를 파악하며 어떤 알고리즘을 쓸 수 있을지 고민해 가는 과정ex. 가능한 시간 복잡도, 알고리즘 선택입출력 제한1 ≤ N ≤ 20|S| ≤ 1,000,000 (주어지는 정수의 절댓값은 100,000을 넘지 않음) 만들 수 있는 모든 부분수열의 개수는 2²⁰ = 1,048,576개다. 부분수열마다 모든 원소의 합을 구하는 방식은 불가능하고, 백..
1. 캐시 기본 동작캐시가 없을 때데이터가 변경되지 않아도 계속 네트워크를 통해 전체 데이터를 다운 받아야 함인터넷 네트워크는 하드 디스크 등에 비해 상대적으로 매우 느리고 비쌈브라우저 로딩 속도도 느리기 때문에 사용자는 느린 경험을 하게 됨 캐시가 있을 때응답에 cache-control로 캐시가 유효한 시간(초)을 함께 보낼 수 있음웹 브라우저에서 브라우저 캐시에 응답 결과를 저장함두 번째 요청 때는 캐시가 유효하다면 브라우저 캐시에서 받아오면 됨캐시 유효 시간 검증 & 브라우저 캐시에서 조회캐시 유효 시간 동안은 네트워크를 사용하지 않아도 되기 때문에 느리고 비싼 네트워크 사용량을 줄일 수 있음 캐시 유효 시간을 검증했는데, 끝난 경우엔 네트워크를 통해 데이터를 받아야 함 (캐시 갱신) 2. 검증 헤..
https://www.acmicpc.net/problem/16937 크기가 H × W인 모눈종이에 크기가 Ri × Ci인 스티커 N개 중 2개를 최대한 넓게 붙이는 문제다.두 스티커는 겹쳐질 수 없고 모눈종이를 벗어날 수 없으며, 두 스티커가 접하는 것과 스티커를 90도 회전시키는 것은 가능하다. 문제 탐색하기- 문제에서 구해야 하는 최종 정답은 무엇인지 탐색한 과정- 그 정답을 구하기 위해 어떻게 코드를 구현해야 할지 고민한 과정- 문제에 들어오는 범위를 파악하며 어떤 알고리즘을 쓸 수 있을지 고민해 가는 과정ex. 가능한 시간 복잡도, 알고리즘 선택입출력 제한1 ≤ H, W, N ≤ 1001 ≤ Ri, Ci ≤ 100입출력 제한이 작아서 브루트 포스로 먼저 시도해보는 게 좋을 듯하다. (+ int 범..
1. HTTP 헤더 개요RFC2616 (1999년)a. HTTP 헤더 분류General 헤더메시지 전체에 적용되는 정보ex. Connection: closeRequest 헤더요청 정보ex. User-Agent: Mozilla/5.0 (Macintosh; ...)Response 헤더응답 정보ex. Server: ApacheEntity 헤더엔티티 바디 정보ex. Content-Type: text/html, Content-Length: 3423 b. HTTP 바디메시지 본문(message body)에 엔티티 본문(entity body)을 담아 전달함엔티티 본문은 요청이나 응답에서 전달할 실제 데이터엔티티 헤더는 엔티티 본문의 데이터를 해석할 수 있는 정보를 제공함ex. 데이터 유형(html, json), 데이..
1. HTTP 상태코드 소개상태 코드클라이언트가 보낸 요청의 처리 상태를 응답(Status line)에서 알려주는 기능1xxInformational요청이 수신되어 처리중2xxSuccessful요청 정상 처리3xxRedirection요청을 완료하려면 추가 행동이 필요4xxClient Error잘못된 문법 등으로 서버가 요청 수행 불가5xxServer Error서버가 정상 요청을 처리하지 못함 클라이언트가 인식할 수 없는 상태 코드를 서버에서 반환하더라도, 클라이언트는 상위 상태 코드(2xx, 4xx 등)로 해석해서 처리하기 때문에 문제없음 (클라이언트 변경 필요 X) 1xx 상태 코드는 거의 사용하지 않으므로 생략! 2. 2xx - 성공클라이언트의 요청을 성공적으로 처리 (Successful)a. 200 ..