HTTP란? HTTP(Hyper Text Transfer Protocol)는 인터넷에서 주로 사용하는 데이터를 송수신하기 위한 프로토콜이다. HTTP에 대한 자세한 내용은 다음을 참고하자. [네트워크] HTTP란? non-persistent HTTP vs persistent HTTP | RTT란? Web 과 HTTP 웹 페이지는 객체(object)로 구성된다. 객체(object)는 HTML 파일, JPEG 이미지, JAVA applet, 오디오 파일 등이 될 수 있다. 웹페이지는 여러 참조된 객체를 포함하는 기본 HTML 파일로 구성되며, code-lab1.tistory.com HTTP 1.0과 HTTP 1.1의 차이 1) Non-Persistent vs Persistent HTTP 1.0과 HTTP 1..
문제 https://www.acmicpc.net/problem/17374 17374번: 비트베리 비트베리는 국내 최다 사용자를 확보하고 있는 간편암호화폐 지갑이다. 비트베리의 가장 큰 특징 중 하나는 카카오 계정으로 지갑을 만들고, 전화번호로 암호화폐를 주고받을 수 있는 점이다. www.acmicpc.net 풀이 수학적으로 까다로운 문제였다. 이 문제는 두 가지 방법을 사용해서 해결할 수 있다. 첫 번째 방법은 모든 비트와 베리를 코인으로 바꾼 뒤 코인을 비트와 1:1에 가깝게 배분하는 방법이다. 즉, 비트 -> 코인, 베리->코인 이후 코인-> 비트:코인 (1:1에 가깝게) 두 번째 방법은 모든 베리를 코인으로 바꾼 뒤 모든 코인을 비트로 바꾼 뒤 비트를 코인과 1:1에 가깝게 배분하는 방법이다. 즉,..
API (Application Programming Interface)란? API는 응용 프로그램에서 사용할 수 있도록 운영체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스를 뜻한다. -위키피디아- 위키피디아를 인용하자면 API의 정의는 위와 같다. 하지만 이 설명을 듣고는 이해하기가 쉽지 않다. API를 설명할 때 보통 식당의 점원으로 비유하곤 한다. 손님은 점원에게 음식을 주문하고, 점원은 주문을 요리사에게 전달한다. 요리사는 요리를 만들어 점원에게 주고, 점원은 손님에게 요리를 서빙한다. 이처럼 API는 식당의 점원과 같은 역할을 한다. 여기서 손님과 요리사는 프로그램으로 비유할 수 있다. 즉, API는 프로그램들이 서로 상호작용하는 것을 도와주는 매개체라고 할 수 있다. A..
AOP (Aspect Oriented Programming)란? AOP는 Aspect Oriented Programming의 약자로 관점 지향 프로그래밍이라고 불린다. 관점 지향은 어떤 로직을 기준으로 핵심적인 관점, 부가적인 관점으로 나누어서 보고 그 관점을 기준으로 모듈화 하겠다는 것이다. *모듈화 : 어떤 공통된 로직이나 기능을 하나의 단위로 묶는 것 예를 들어 핵심적인 관점은 비즈니스 로직이 될 수 있고, 부가적인 관점은 핵심 로직을 실행하기 위해 행해지는 데이터베이스 연결, 로깅, 파일 입출력 등이 될 수 있다. AOP는 흩어진 관심사(Crosscutting Concerns)를 모듈화 할 수 있는 프로그래밍 기법이다 [그림 1]과 같이 클래스 A, B, C에서 공통적으로 나타나는 색깔 블록은 중..
문제 https://www.acmicpc.net/problem/11265 11265번: 끝나지 않는 파티 입력의 첫 번째 줄에는 파티장의 크기 N(5 ≤ N ≤ 500)과 서비스를 요청한 손님의 수 M(1 ≤ M ≤ 10,000) 이 주어진다. 각각의 파티장은 1번부터 N번까지 번호가 붙여져 있다. 다음에는 N개의 줄에 걸 www.acmicpc.net 풀이 플로이드-와샬 알고리즘을 사용하면 아주 간단하게 해결 가능하다. 단순한 문제이므로 코드를 참고하자. 코드 HTML 삽입 미리보기할 수 없는 소스
문제 https://www.acmicpc.net/problem/4307 4307번: 개미 첫째 줄에 테스트 케이스의 개수가 주어진다. 각 테스트 케이스의 첫째 줄에는 막대의 길이와 개미의 수 n이 주어진다. 다음 n개 줄에는 숫자가 하나씩 주어지며, 이 숫자는 개미의 초기 위치를 www.acmicpc.net 풀이 이 문제는 애드 훅 문제라고 하는데, 애드 훅이 뭔지 잘 모르겠어서 조사해봤다. 일반적으로 경쟁적 프로그래밍(Competitive Programming) 대회, 이른바 알고리즘 대회에서는 종종 애드혹(ad-hoc) 문제가 출제된다. 일반적으로 애드혹 문제라고 하는 것은 해당 문제를 풀기 위해 잘 알려진 정교한(sophisticated) 알고리즘을 적용하지 않고 해결할 수 있는 유형의 문제를 일컫..
문제 https://programmers.co.kr/learn/courses/30/lessons/60063?language=java 코딩테스트 연습 - 블록 이동하기 [[0, 0, 0, 1, 1],[0, 0, 0, 1, 0],[0, 1, 0, 1, 1],[1, 1, 0, 0, 1],[0, 0, 0, 0, 0]] 7 programmers.co.kr 풀이 나는 이 문제를 조금 복잡하게 푼 것 같다. 우선 Robot 클래스를 만들어서 x좌표와 y좌표, 현재 방향(0은 가로 1은 세로), 걸린 시간을 저장하게 만들었다. 참고로 방향이 가로일 때 x, y는 왼쪽 좌표 기준, 세로일 때 x, y는 위쪽 좌표를 기준으로 한 것이다. 이후 탐색은 BFS를 통해서 모든 경우의 수를 따지면 된다. 이때 상하좌우로 움직이는..
라인플러스 코딩테스트 후기! 2022년 3월 26일 토요일, 10시부터 13시까지 라인플러스 상반기 공채 코딩테스트를 진행했다. 플랫폼은 프로그래머스를 이용했고, IDE에서 복사+붙여넣기도 가능하다(난 IDE를 안 썼지만) 우선 전체적인 난이도는 평이했지만... 실수를 하면 시간이 많이 부족할 듯 싶었다. 어려운 알고리즘 문제보단, 꼼꼼하게 실수하지 않고 구현을 잘하는 게 중요할 듯 싶었다. 문제에 대해 설명할 수는 없으니, 난이도만 간단하게 이야기하자면 1번 문제 : 간단한 문자열 처리 문제였다. 어렵지 않았으나 실수를 해서 시간을 조금 날렸다. 백준 실버 3~4 정도 난이도 2번 문제 : 문자열 처리와 Set 자료구조를 이용해서 해결했다. 이 문제에서도 큰 실수를 해서 시간을 많이 날렸다 ㅠㅠ 백준 ..
1차 코딩 테스트는 2022년 3월 12(토) 10시~13시까지 총 3시간 동안 4문제를 풀어야 했다. 플랫폼은 프로그래머스를 이용했고, IDE를 사용해서 복사+붙여넣기도 가능했다. 제출 하더라도 정답을 알 수 없다. 테스트 케이스에 대한 결과만 나오기 때문에 예외 케이스를 잘 고려해야 했다. 아무래도 문제에 대해서 말할 수는 없기 때문에, 난이도가 어땠는지 대충 말하자면 다음과 같다. 1번 문제 : Greedy 알고리즘을 사용한 간단한 문제였던 것 같다. 백준 실버2~ 골드5 정도 난이도 같았다. 2번 문제 : 조금 까다로운 구현 문제였다. 이 문제에서 시간을 많이 잡아먹었다. 그래도 다행히 잘 푼 것 같다. 백준 골드4정도 되는 문제 같았다. 3번 문제 : DP 문제였던 것 같은데, 시간도 부족하고 ..
빈 스코프(Bean Scope)란? 빈 스코프는 말 그대로 빈이 존재할 수 있는 범위를 뜻한다. 스프링은 다음과 같은 다양한 스코프를 지원한다. 싱글톤(Singleton) : 기본 스코프, 스프링 컨테이너의 시작과 종료까지 유지되는 가장 넓은 범위의 스코프이다. 프로토타입(Prototype) : 스프링 컨테이너는 프로토타입 빈의 생성과 의존관계 주입까지만 관여하고 더는 관리하지 않는 매우 짧은 범위의 스코프이다. 웹 관련 스코프 request : 웹 요청이 들어오고 나갈 때까지 유지되는 스코프 session : 웹 세션이 생성되고 종료될 때까지 유지되는 스코프 application : 웹의 서블릿 컨텍스트와 같은 범위로 유지되는 스코프 싱글톤 스코프 싱글톤 스코프의 빈을 조회하면 스프링 컨테이너는 항상 ..