반응형 분류 전체보기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. 이전 1 ··· 16 17 18 19 20 21 22 ··· 35 다음 반응형