본문 바로가기

전체 글123

[프로그래머스 72412] 순위 검색 (C++) A. 문제설명 문제에 대한 자세한 설명은 링크 참조 programmers.co.kr/learn/courses/30/lessons/72412 2021. 2. 16.
[프로그래머스 60057] 문자열 압축 (C++) A. 문제설명 문제에 대한 자세한 설명은 링크 참조 programmers.co.kr/learn/courses/30/lessons/60057 코딩테스트 연습 - 문자열 압축 데이터 처리 전문가가 되고 싶은 어피치는 문자열을 압축하는 방법에 대해 공부를 하고 있습니다. 최근에 대량의 데이터 처리를 위한 간단한 비손실 압축 방법에 대해 공부를 하고 있는데, 문자 programmers.co.kr 1. 문자열 s가 존재 2. 문자열에서 중복 발생하는 문자들의 발생횟수를 기록하여 문자열을 압축하려 함 3. 문자열을 잘라 압축하는 단위는 1개이상 4. 문자열을 잘라 압축하는 표현 중, 가장 길이가 짧은 것을 반환 B. 접근법 문제 조건에 따라 문자열 재단이 주요한 문제. 완전 탐색으로 길이 1부터 |문자열 길이| /.. 2021. 2. 1.
[프로그래머스 64061] 크레인 인형뽑기 (C++) A. 문제설명 문제에 대한 자세한 설명은 링크 참조 programmers.co.kr/learn/courses/30/lessons/64061 코딩테스트 연습 - 크레인 인형뽑기 게임 [[0,0,0,0,0],[0,0,1,0,3],[0,2,5,0,1],[4,2,4,4,2],[3,5,1,3,1]] [1,5,3,5,1,2,1,4] 4 programmers.co.kr 1. N*N 크기의 배열이 존재 2. 크레인이 각 열을 이동하며 맨 위의 인형을 뽑는다. 없는경우, 아무 행동도 하지 않음 3. 인형을 뽑아, 바구니에 쌓았을 때 같은 인형 두개가 겹치는 경우 없어짐 4. 모든 명령을 받아 수행하고, 인형을 겹쳐 없어지는 갯수를 구하라 B. 접근법 스택을 이용하여 간단하게 풀 수 있는 문제, 나는 C++ 벡터로 쉽게 .. 2021. 1. 24.
[백준 16918] 봄버맨 (C++) A. 문제설명 www.acmicpc.net/problem/16918 16918번: 봄버맨 첫째 줄에 R, C, N (1 ≤ R, C, N ≤ 200)이 주어진다. 둘째 줄부터 R개의 줄에 격자판의 초기 상태가 주어진다. 빈 칸은 '.'로, 폭탄은 'O'로 주어진다. www.acmicpc.net 문제에 대한 자세한 설명은 링크 참조 1. C*R 크기의 배열이 존재 2. 봄버맨이 해당 배열안에 폭탄을 설치하는 데 그 규칙은 다음과 같다. ㆍ가장 처음에 봄버맨은 일부 칸에 폭탄을 설치해 놓는다. 모든 폭탄이 설치된 시간은 같다. ㆍ다음 1초 동안 봄버맨은 아무것도 하지 않는다. ㆍ다음 1초 동안 폭탄이 설치되어 있지 않은 모든 칸에 폭탄을 설치한다. 즉, 모든 칸은 폭탄을 가지고 있게 된다. 폭탄은 모두 동시.. 2021. 1. 17.
[백준 1194] 달이 차오른다, 가자. (C++) A. 문제설명 www.acmicpc.net/problem/1194 1194번: 달이 차오른다, 가자. 첫째 줄에 미로의 세로 크기 N과 가로 크기 M이 주어진다. (1 ≤ N, M ≤ 50) 둘째 줄부터 N개의 줄에 미로의 모양이 주어진다. 같은 타입의 열쇠가 여러 개 있을 수 있고, 문도 마찬가지이다. 그리고, www.acmicpc.net 문제에 대한 자세한 설명은 링크 참조 1. N*M 미로가 존재 2. 해당 미로의 각 엔트리에는 다음과 같은 규칙이 적용됨 빈 곳 : 언제나 이동할 수 있다. ('.‘로 표시됨) 벽 : 절대 이동할 수 없다. (‘#’) 열쇠 : 언제나 이동할 수 있다. 이 곳에 처음 들어가면 열쇠를 집는다. (a - f) 문 : 대응하는 열쇠가 있을 때만 이동할 수 있다. (A - F.. 2020. 10. 31.
[백준 2638] 치즈 (C++) A. 문제설명 www.acmicpc.net/problem/2638 2638번: 치즈 첫째 줄에는 모눈종이의 크기를 나타내는 두 개의 정수 N, M (5≤N, M≤100)이 주어진다. 그 다음 N개의 줄에는 모눈종이 위의 격자에 치즈가 있는 부분은 1로 표시되고, 치즈가 없는 부분은 0으로 표 www.acmicpc.net 문제에 대한 자세한 설명은 링크 참조 1. 위 그림과 같은 N*M 땅이 존재 2. 땅의 검은 부분에는 치즈가 존재, 흰 부분에는 공기가 존재 3. 치즈는 상/하/좌/우로 2면이상 공기와 맞닿으면 1초이후 사라짐 4. 그러나 치즈에 둘러쌓인 공기부분은 치즈에 영향을 주지 않음 5. 치즈는 배열의 가장자리에는 존재하지 않는다고 할 때, 치즈가 땅에서 없어지기까지의 총 시간을 구하라 B. 접근.. 2020. 10. 21.
[백준 2468] 안전 영역 (C++) A. 문제설명 www.acmicpc.net/problem/2468 2468번: 안전 영역 재난방재청에서는 많은 비가 내리는 장마철에 대비해서 다음과 같은 일을 계획하고 있다. 먼저 어떤 지역의 높이 정보를 파악한다. 그 다음에 그 지역에 많은 비가 내렸을 때 물에 잠기지 않는 � www.acmicpc.net 문제에 대한 자세한 설명은 링크 참조 1. 아래와 같은 N*N 크기의 땅이 존재 2. 각 땅에는 높이 값이 주어지고, 이제 해당 지역에 비를 뿌리려고 함 3. 비가 내릴 때, 다음과 같이 특정 높이 이하의 지역들은 물에 잠기는데 이때 물에 잠기지 않은 인접한 지역들을 모아 안전 영역이라고 함 4. 강수량에 따라 특정 높이로 물에 잠기는 지역이 달라질 수 있을 때 최대가 되는 안전 영역의 갯수를 구하라.. 2020. 10. 16.
[백준 9019] DSLR (C++) A. 문제설명 www.acmicpc.net/problem/9019 9019번: DSLR 네 개의 명령어 D, S, L, R 을 이용하는 간단한 계산기가 있다. 이 계산기에는 레지스터가 하나 있는데, 이 레지스터에는 0 이상 10,000 미만의 십진수를 저장할 수 있다. 각 명령어는 이 레지스터에 � www.acmicpc.net 문제에 대한 자세한 설명은 링크 참조 1. D/S/R/L 4개의 명령을 수행하는 레지스터가 존재 2. 각 명령에 대한 설명은 아래와 같음 D: D 는 n을 두 배로 바꾼다. 결과 값이 9999 보다 큰 경우에는 10000 으로 나눈 나머지를 취한다. 그 결과 값(2n mod 10000)을 레지스터에 저장한다. S: S 는 n에서 1 을 뺀 결과 n-1을 레지스터에 저장한다. n이 .. 2020. 10. 16.
[백준 6087] 레이저 통신 (C++) A. 문제설명 www.acmicpc.net/problem/6087 6087번: 레이저 통신 크기가 1×1인 정사각형으로 나누어진 W×H 크기의 지도가 있다. 지도의 각 칸은 빈 칸이거나 벽이며, 두 칸은 'C'로 표시되어 있는 칸이다. 'C'로 표시되어 있는 두 칸을 레이저로 통신하기 위해서 www.acmicpc.net 문제에 대한 자세한 설명은 링크 참조 1. W*H 크기의 배열이 주어짐 2. 각 배열은 빈칸 '.' 혹은 벽 '*' 으로 이루어짐 3. 여기서 'C'로 표시되는 두 칸이 주어짐 4. 아래 그림과 같이 이 두칸을 레이저로 통신할 수 있게 잇고자 하는데 중간에 거울을 놓아 레이저의 이동방향을 90도 회전할 수 있게 함 7 . . . . . . . 7 . . . . . . . 6 . . . ... 2020. 10. 16.
[백준 1600] 말이 되고픈 원숭이 (C++) A. 문제설명 www.acmicpc.net/problem/1600 1600번: 말이 되고픈 원숭이 첫째 줄에 정수 K가 주어진다. 둘째 줄에 격자판의 가로길이 W, 세로길이 H가 주어진다. 그 다음 H줄에 걸쳐 W개의 숫자가 주어지는데, 0은 아무것도 없는 평지, 1은 장애물을 뜻한다. 장애물이 있�� www.acmicpc.net 문제에 대한 자세한 설명은 링크 참조 1. H*W 크기의 배열이 주어짐 2. 원숭이는 0,0의 위치에서 H,W의 위치로 이동하고자 함 3. 원숭이는 기본적으로 상하좌우 인접한 칸으로 이동이 가능하나 아래와 같은 말의 이동을 따라하려 함 x x x x 말 x x x x 4. 말의 이동동선은 다음과 같은데, 원숭이는 해당 이동을 K번 따라할 수 있음 5. 말의 이동방법과 원숭이의 .. 2020. 10. 12.
[백준 16509] 장군 (C++) A. 문제설명 www.acmicpc.net/problem/16509 16509번: 장군 오랜만에 휴가를 나온 호근이는 문득 동아리방에 있는 장기가 하고 싶어졌다. 하지만 장기를 오랫동안 하지 않은 탓인지 예전에는 잘 쓰던 상을 제대로 쓰는 것이 너무 힘들었다. 호근이를 위해 www.acmicpc.net 문제에 대한 자세한 설명은 링크 참조 1. 10*9 크기의 장기판이 존재 2. 장기게임에서의 상의 이동은 아래와 같이 8방향으로 가능함 3. 물론, 실제 장기게임 규칙과 같이 해당 이동동선에 말이 존재하면 이동할 수 없음 4. 왕과 상의 위치가 각각 주어졌을 때, 상이 최소이동으로 왕을 잡는 경우를 구하라 B. 접근법 BFS 장기말의 이동의 최단동선 중 왕을 잡는 경우를 찾기 위해 BFS로 구현하였다. 일.. 2020. 10. 12.
[백준 1938] 통나무 옮기기 (C++) A. 문제설명 www.acmicpc.net/problem/1938 1938번: 통나무 옮기기 첫째 줄에 주어진 평지의 한 변의 길이 N이 주어진다. (4 2020. 10. 10.
[백준 2151] 거울 설치 (C++) A. 문제설명 www.acmicpc.net/problem/2151 2151번: 거울 설치 첫째 줄에 집의 크기 N (2 ≤ N ≤ 50)이 주어진다. 다음 N개의 줄에는 N개의 문자로 집에 대한 정보가 주어진다. ‘#’는 문이 설치된 곳으로 항상 두 곳이며, ‘.’은 아무 것도 없는 것으로 빛은 �� www.acmicpc.net 문제에 대한 자세한 설명은 링크 참조 1. N*N 크기의 땅이 존재 2. 각 배열의 엔트리에는 '.', '!', '#', '*'가 주어짐 3. '*'는 벽으로 빛이 이동하지 못하고, '.'은 아무것도 없는 공간으로 빛이 이동가능하며 '#'은 문으로 빛이 들어오는 지점임 4. 여기서 '!'는 거울이 있는 지점인데 거울을 45도 비스듬하게 놓아 빛의 이동경로를 바꿔줌 5. 주어진 배.. 2020. 10. 9.
[백준 16946] 벽 부수고 이동하기 4 (C++) A. 문제설명 www.acmicpc.net/problem/16946 16946번: 벽 부수고 이동하기 4 N×M의 행렬로 표현되는 맵이 있다. 맵에서 0은 이동할 수 있는 곳을 나타내고, 1은 이동할 수 없는 벽이 있는 곳을 나타낸다. 한 칸에서 다른 칸으로 이동하려면, 두 칸이 인접해야 한다. 두 칸이 � www.acmicpc.net 문제에 대한 자세한 설명은 링크 참조 1. N*M크기의 배열이 존재 2. 해당 배열 안에는 1:벽, 또는 0:빈칸이 입력으로 주어짐 3. 각 벽이 있는 공간에서 인접한 공간으로 벽을 부수고 이동하려고 함 4. 여기서 벽은 맨 처음 하나만 부술 수 있고, 이동가능한 공간은 빈 공간만 5. 이렇게 해서 각각의 벽인 공간에 총 이동할 수 있는 거리를 구할 것 B. 접근법 Has.. 2020. 10. 8.
[백준 2174] 로봇 시뮬레이션 (C++) A. 문제설명 www.acmicpc.net/problem/2174 2174번: 로봇 시뮬레이션 첫째 줄에 두 정수 A, B가 주어진다. 다음 줄에는 두 정수 N, M이 주어진다. 다음 N개의 줄에는 각 로봇의 초기 위치(x, y좌표 순) 및 방향이 주어진다. 다음 M개의 줄에는 각 명령이 명령을 내리는 순 www.acmicpc.net 문제에 대한 자세한 설명은 링크 참조 1. 가로 A, 세로 B 크기의 아래와 같은 땅이 존재 2. N개의 로봇의 초기위치 x, y 그리고 현재 바라보는 방향이 각각 주어짐 3. 그리고 M번의 명령이 주어지는데, 각각 해당 명령을 수행하는 로봇의 번호, 명령의 종류, 반복 횟수가 주어짐 4. 여기서 명령의 종류는 아래와 같음 L: 로봇이 향하고 있는 방향을 기준으로 왼쪽으로 .. 2020. 10. 8.