본문 바로가기
반응형

분류 전체보기313

백준 13458 : 시험 감독 https://www.acmicpc.net/problem/13458 13458번: 시험 감독 첫째 줄에 시험장의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 각 시험장에 있는 응시자의 수 Ai (1 ≤ Ai ≤ 1,000,000)가 주어진다. 셋째 줄에는 B와 C가 주어진다. (1 ≤ B, C ≤ 1,000,000) www.acmicpc.net [ 문제풀이 ] 브론즈 2의 난이도답게 정말 쉬운 문제이다. 각 시험장마다 총감독관을 1명 배치하고 남은 응시자 수를 마크할 수 있도록 부감독관을 배치하면 해결할 수 있다. ​조심해야 할 점은 정답의 범위이다. 시험장의 개수 100만, 각 시험장에 있는 응시자 수 100만, 총감독관과 부감독관이 응시할 수 있는 수가 1인 최악의 경우 100.. 2021. 8. 1.
백준 3190 : 뱀 https://www.acmicpc.net/problem/3190 3190번: 뱀 'Dummy' 라는 도스게임이 있다. 이 게임에는 뱀이 나와서 기어다니는데, 사과를 먹으면 뱀 길이가 늘어난다. 뱀이 이리저리 기어다니다가 벽 또는 자기자신의 몸과 부딪히면 게임이 끝난다. 게임 www.acmicpc.net [ 문제풀이 ] 전형적인 시뮬레이션 문제이다. 문제의 조건을 잘 읽어보면 결국 가장 중요한 것은 뱀의 머리와 꼬리를 어떻게 관리할 것인가?이다. N이 최대 100이기 때문에 뱀의 길이는 최대 100 x 100의 길이밖에 될 수 없다. 결국 시간 또한 100 x 100을 넘길 수가 없다. 이후부터는 자신의 몸에 부딪힐 수밖에 없기 때문이다. ​따라서 시간별로 뱀의 몸통 위치와 머리 부분, 꼬리 부분의 좌표.. 2021. 8. 1.
백준 12100 : 2048(Easy) https://www.acmicpc.net/problem/12100 12100번: 2048 (Easy) 첫째 줄에 보드의 크기 N (1 ≤ N ≤ 20)이 주어진다. 둘째 줄부터 N개의 줄에는 게임판의 초기 상태가 주어진다. 0은 빈 칸을 나타내며, 이외의 값은 모두 블록을 나타낸다. 블록에 쓰여 있는 수는 2 www.acmicpc.net [ 문제풀이 ] 이번에도 마찬가지로 전형적인 시뮬레이션 문제이다. 2048 게임은 워낙 유명하기 때문에 문제를 이해하는 데는 어려움이 없을 것이다. ​4방향으로 이동해야하는 문제는 4방향 함수를 모두 구현하는 것보다 맵을 회전하여 4개를 만든 후 한 가지 방향으로 이동시키는 메서드를 구현하는 것이 구현하기에 훨씬 편할 것이다. 삼성 문제는 시간 복잡도가 넉넉하기 때문에.. 2021. 8. 1.
백준 13460 : 구슬 탈출 2 https://www.acmicpc.net/problem/13460 13460번: 구슬 탈출 2 첫 번째 줄에는 보드의 세로, 가로 크기를 의미하는 두 정수 N, M (3 ≤ N, M ≤ 10)이 주어진다. 다음 N개의 줄에 보드의 모양을 나타내는 길이 M의 문자열이 주어진다. 이 문자열은 '.', '#', 'O', 'R', 'B' www.acmicpc.net [ 문제풀이 ] 삼성 기출문제는 대부분 시뮬레이션 or 완전 탐색 문제이다. 이 문제는 매번 새로운 맵을 만들어주면서 모든 경우의 수를 확인하면 해결할 수 있다. ​주의해야 할 점은 빨간 구슬과 파란 구슬 중 어떤 구슬을 먼저 움직이느냐를 판단하는 것이다. 현재 map이 다음과 같은 형태라고 하자. # # # # # # O # # B # # R #.. 2021. 8. 1.
백준 1027 : 고층 건물 https://www.acmicpc.net/problem/1027 1027번: 고층 건물 세준시에는 고층 빌딩이 많다. 세준시의 서민 김지민은 가장 많은 고층 빌딩이 보이는 고층 빌딩을 찾으려고 한다. 빌딩은 총 N개가 있는데, 빌딩은 선분으로 나타낸다. i번째 빌딩 (1부터 시작) www.acmicpc.net [ 문제풀이 ] N이 최대 50이기 때문에 모든 빌딩을 빌딩 위치부터 좌측(우측)을 탐색하면서 가장 최근에 구한 고층빌딩의 기울기보다 작은(큰) 빌딩들의 개수를 구해주면 된다. import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; .. 2021. 8. 1.
로드 밸런싱(Load Balancing) 보통 대부분의 인터넷 서비스는 클라이언트-서버 모델(Client-Server Model)을 사용한다. 클라이언트-서버 모델(Client-Server Model) : 서비스 요청자인 클라이언트와 서비스 자원의 제공자인 서버 간에 작업을 분리해 주는 분산 애플리케이션 구조이자 네트워크 아키텍처를 의미한다. 예를 들어 하나의 서버가 다수의 클라이언트를 관리하는 1:N 관계를 가진다고 하자. 서버가 맡은 클라이언트의 수가 굉장히 적다면 우리는 트래픽에 대해 아무런 걱정을 할 필요가 없을 것이다. 충분히 서버의 성능으로 모든 클라이언트의 요청을 처리해 줄 수 있기 때문이다. 그렇다면 클라이언트 수가 굉장히 많다면 어떻게 될까? 서버의 성능은 한계가 존재하기 때문에 결국 클라이언트의 모든 요청을 신속하게 처리해주기.. 2021. 7. 31.
프록시 패턴(Proxy Pattern) 프록시 패턴(Proxy Pattern)은 구조(Structural) 패턴 중 하나로써 접근이 어려운 객체와 여기에 연결하려는 객체 사이에서 인터페이스 역할을 수행하는 패턴이다. ​프록시는 대리인을 의미한다. 어떤 업무가 발생하였을 경우 그 업무가 사장이 직접 처리해도 되지 않을 정도의 업무라면 굳이 사장에게 보고하지 않고 대리인을 통해 처리할 것이다. 프록시 패턴 역시 이러한 원리이다. ​중요한 것은 프록시는 대리인의 역할로 요청을 처리해 줘야 한다. 즉, 사장과 고객을 연결해 주는 인터페이스 역할을 수행할 뿐 자신이 고객의 요청에 대해 관여해서는 안 된다. ​주로 네트워크 연결, 메모리의 대용량 객체로의 접근 등에 이용한다. 또한, 스프링을 공부하다보면 프록시 패턴을 굉장히 히 활용하는 것을 알 수 있.. 2021. 7. 31.
플라이웨이트 패턴(Flyweight Pattern) 플라이웨이트 패턴(Flyweight Pattern)은 구조(Structural) 패턴 중 하나로써 인스턴스가 필요할 때마다 매번 생성하는 것이 아니고 가능한 한 공유해서 사용함으로써 메모리를 절약하는 패턴이다. ​간단히 얘기하면 사용하려고 하는 인스턴스가 이전에 생성하여 존재한다면 인스턴스를 생성하지 말고 가져다 써서 메모리를 절약하겠다는 의미이다. ​플라이웨이트 패턴을 사용하면 다수의 유사 객체를 생성하거나 조작할 때 유용하게 사용할 수 있다. ​ String 객체를 생성하는 리터럴 방식의 String Constant Pool이 대표적인 플라이웨이트 패턴을 적용한 예시이다. 플라이웨이트 패턴의 구조는 다음과 같다. FlyweigtFactory : Flyweight 객체를 생성 및 공유해 주는 역할을 수.. 2021. 7. 31.
백준 1461 : 도서관 https://www.acmicpc.net/problem/1461 1461번: 도서관 첫째 줄에 책의 개수 N과, 세준이가 한 번에 들 수 있는 책의 개수 M이 주어진다. 둘째 줄에는 책의 위치가 주어진다. N은 10,000보다 작거나 같은 자연수이고, M은 10,000보다 작거나 같다. 책의 위치 www.acmicpc.net [ 문제풀이 ] 최소 걸음을 구하는 것이기 때문에 가장 먼 곳에 있는 책은 마지막에 옮겨야 한다. 마지막에는 0으로 돌아올 필요가 없기 때문이다. 또한, 책 한개를 옮길 때 M개의 책을 함께 옮길 수 있으니 남은 책들중에서 거리가 먼 책을 먼저 옮겨야 한다. 따라서 두 조건 모두 거리가 먼 책이 우선순위가 높기 때문에 정렬을 먼저 해준다. 정렬전: -37 2 -6 -39 -29 1.. 2021. 7. 31.
반응형