문제 https://www.acmicpc.net/problem/1022 1022번: 소용돌이 예쁘게 출력하기 첫째 줄에 네 정수 r1, c1, r2, c2가 주어진다. www.acmicpc.net 풀이 모든 숫자를 계산해서 저장하는 것은 메모리의 한계로 가능하지 않다(10000*10000=1억 개의 int) 따라서 숫자는 계속해서 계산해나가면서, 범위에 있는 배열에만 값을 저장하면 된다. 이때 map[r2-r1+1][c2-c1+1] 을 선언해서 사용하면 된다. 자세한 내용은 코드를 참고하자. 코드 HTML 삽입 미리보기할 수 없는 소스
CPU(Central Processing Unit)란? CPU는 컴퓨터 시스템을 통제하고 프로그램의 연산을 실행, 처리하는 가장 핵심적인 컴퓨터의 제어 장치 혹은 그 기능을 내장한 칩이다. CPU는 외부에서 정보를 입력받아 기억하고 컴퓨터 프로그램의 명령어를 해석하여 연산하고 외부로 출력하는 역할을 한다. 쉽게 말해 컴퓨터의 두뇌와 같은 역할을 한다. CPU는 기계어로 쓰인 컴퓨터 프로그램의 명령어를 해석하여 실행한다. CPU의 기본 구성은 명령어를 저장하는 역할을 하는 프로세서 레지스터, 연산을 담당하는 ALU, 명령어의 해석과 올바른 실행을 위하여 CPU를 내부적으로 제어하는 제어부와 내부 버스 등이 있다. CPU의 성능은 프로그램 로드 속도와 프로그램이 얼마나 원활하게 실행되는지에 큰 영향을 미친다..
컴포넌트 스캔(Component Scan) 컴포넌트 스캔이란 스프링이 스프링 빈(Bean)으로 등록될 준비가 된 클래스들을 스캔하여 빈(Bean)으로 등록해주는 과정을 말한다. @Component 어노테이션이 붙어있는 클래스들은 전부 컴포넌트 스캔의 대상이 된다. @Configuration, @Service, @Repository, @Controller, 등의 어노테이션에도 전부 @Component이 포함되어 있어 자동으로 컴포넌트 스캔의 대상이 된다. @ComponentScan과 컴포넌트 스캔 범위 컴포넌트 스캔을 사용하기 위해서는 설정 정보 클래스에 @ComponentScan 어노테이션을 붙여줘야 한다. 이때 컴포넌트 스캔의 범위는 설정 정보 클래스의 패키지를 포함한 모든 하위 패키지가 된다. 이때 ..
문제 https://www.acmicpc.net/problem/17822 17822번: 원판 돌리기 반지름이 1, 2, ..., N인 원판이 크기가 작아지는 순으로 바닥에 놓여있고, 원판의 중심은 모두 같다. 원판의 반지름이 i이면, 그 원판을 i번째 원판이라고 한다. 각각의 원판에는 M개의 정수가 적혀 www.acmicpc.net 풀이 단순 구현 문제이다. 꼼꼼히 작성하는 게 중요하다! 나는 이 문제를 다음과 같이 해결했다. 먼저, 원판은 2차원 배열 circle [][]을 이용해서 표현했다. 이후 두 가지 함수를 작성했다. 1. 원판을 돌리는 함수 -> 시계, 반시계 방향을 기준으로 원판의 숫자를 돌린다. 인덱스 계산을 잘해야 한다. 2. 숫자를 지우는 함수 -> 모든 원소를 돌며 상하좌우를 탐색해 ..
문제 https://www.acmicpc.net/problem/16926 16926번: 배열 돌리기 1 크기가 N×M인 배열이 있을 때, 배열을 돌려보려고 한다. 배열은 다음과 같이 반시계 방향으로 돌려야 한다. A[1][1] ← A[1][2] ← A[1][3] ← A[1][4] ← A[1][5] ↓ ↑ A[2][1] A[2][2] ← A[2][3] ← A[2][4] A[2][5] www.acmicpc.net 풀이 이 문제는 단순 구현 문제이지만, 풀기 쉽지 않았다. 내 풀이는 다음과 같다. [그림 1]과 같이 temp 배열을 만들고, 사각형의 테두리를 기준으로 왼쪽 위부터 반시계방향으로 원소를 탐색하면서 R칸씩 밀어서 (범위를 벗어나면 나머지 연산) 저장해놓는다. 이후 다시 똑같은 순서로 탐색하면서 t..
형변환(Type Conversion)이란? int a = 10; float b = 1.2; printf("%d", a+b); 형변환이란 데이터의 타입을 변경하는 것이다. 예를 들어 위와 같이 데이터 타입이 다른 두 변수를 더하는 연산을 하려고 하면 어떻게 될까? 오류가 발생하지는 않고 묵시적 형변환이 일어나게 된다. 묵시적 형변환(Implicit Type Conversion)이란? 묵시적 형변환이란 컴파일러에 의해 자동으로 형변환이 이루어지는 것을 말한다. 예를 들어 int a 와 float b를 더할 때 int a는 자동으로 float형으로 형변환이 이루어진다. 묵시적 형변환은 위 그림처럼 표현 범위가 좁은 데이터 타입에서 -> 넓은 데이터 타입으로의 변환만 허용된다. 예를 들어 int 형은 doubl..
싱글톤 패턴이란? 만약 스프링이 없는 순수한 DI 컨테이너 Appconfig에 고객들이 요청을 보낸다고 하자. DI 컨테이너는 요청을 받을 때마다 객체를 새로 생성할 것이다. 따라서 고객 트래픽이 초당 100건이 나오면 초당 100개의 객체가 생성되고 소멸된다. 이는 메모리 낭비가 매우 심하다. 해결 방안으로는 객체를 딱 1개만 생성하고 이를 공유하도록 설계하면 된다. 이것이 바로 싱글톤 패턴이다. 즉, 싱글톤 패턴이란 클래스의 인스턴스가 딱 1개만 생성되는 것을 보장하는 디자인 패턴이다. 따라서 객체 인스턴스를 2개 이상 생성하지 못하도록 막아야 한다. public class SingletonService { //1. static 영역에 객체를 딱 1개만 생성해둔다. private static fina..
블로그 이사합니다아래에서 확인 가능합니다.https://code-lab1.com/%EC%9B%B9%EC%82%AC%EC%9D%B4%ED%8A%B8-%EC%A0%91%EC%86%8D-%EA%B3%BC%EC%A0%95/ [네트워크] 웹사이트 접속 과정에 대하여 (네트워크 과목 총 정리) , 주소창에 www.google.com을 입력웹사이트 접속 과정은 아래와 같은 과정들을 거친다code-lab1.com 웹사이트 접속 과정한 대학생이 캠퍼스에서 노트북으로 구글에 접속한다고 하자. 어떤 과정을 통해 사용자는 구글에 접속할 수 있을까?이 게시글은 그동안 공부한 내용들을 총 정리한다고 볼 수 있다. 자세한 내용이 궁금하다면 참고 링크를 참고하자. 1. 목적지 IP 주소 확인사용자가 웹 브라우저의 주소창에 www.g..
문제 https://www.acmicpc.net/problem/1669 1669번: 멍멍이 쓰다듬기 동물원에서 막 탈출한 원숭이 한 마리가 세상구경을 하고 있다. 그러다 오늘도 어김없이 그의 영원한 라이벌 멍멍이를 만나게 되었다. 원숭이는 멍멍이를 쓰다듬고 싶었다. 하지만 원숭이는 멍 www.acmicpc.net 풀이 나는 수학 문제가 너무 어렵다. 이 문제는 수열 문제로 생각을 잘해야 풀 수 있다. 키차이 Day 1 Day 2 Day 3 Day 4 Day 5 1cm 1 2cm 1 1 3cm 1 1 1 4cm 1 2 1 5cm 1 2 1 1 6cm 1 2 2 1 7cm 1 2 2 1 1 8cm 1 2 2 2 1 9cm 1 2 3 2 1 키차이에 따른 키 크는 과정이다. 잘보면 4cm, 9cm 는 1,2,..
문제 https://www.acmicpc.net/problem/16946 16946번: 벽 부수고 이동하기 4 N×M의 행렬로 표현되는 맵이 있다. 맵에서 0은 이동할 수 있는 곳을 나타내고, 1은 이동할 수 없는 벽이 있는 곳을 나타낸다. 한 칸에서 다른 칸으로 이동하려면, 두 칸이 인접해야 한다. 두 칸이 www.acmicpc.net 풀이 처음에는 모든 벽에서 BFS를 돌려 모든 벽마다 갈 수 있는 곳을 세려고 했으나 이렇게 하면 시간초과가 난다 ㅠㅠ 그래서 다른 방법을 생각해냈다. 모든 0의 묶음을 개수로 표시하고, 해당 벽에서 4방향을 조사해서 다른 묶음이라면 0의 개수를 더해주기만 하면 된다. 예를 들어, 아래와 같은 상황이 있다고 하자. 010 1x2 110 -> xx2 (x는 벽, 숫자는 0..