본문 바로가기

Algorithm

(2139)
(C++) - 백준(BOJ) 3197번 : 백조의 호수 https://www.acmicpc.net/problem/3197 3197번: 백조의 호수 입력의 첫째 줄에는 R과 C가 주어진다. 단, 1 ≤ R, C ≤ 1500. 다음 R개의 줄에는 각각 길이 C의 문자열이 하나씩 주어진다. '.'은 물 공간, 'X'는 빙판 공간, 'L'은 백조가 있는 공간으로 나타낸다. www.acmicpc.net bfs로 해결한 문제였습니다. 📕 풀이방법 📔 입력 및 초기화 호수의 세로, 가로 길이를 저장할 변수 r, c, 빙하를 제거하기 위해 물의 (행, 열) 좌표들을 저장하는 waterQ, 백조가 다닐 수 있는 최전선 범위의 좌표들이 담겨있는 swanQ, 백조 두 마리의 좌표가 저장된 vector 변수 swan, 호수의 모양을 저장할 이차원 문자 배열 lake, 답을 출력할..
(C++) - 백준(BOJ) 14494번 : 다이나믹이 뭐에요? https://www.acmicpc.net/problem/14494 14494번: 다이나믹이 뭐예요? (1, 1)에서 (n, m)에 도달하는 경우의 수를 구하여라. 단, 경우의 수가 엄청 커질 수 있으므로 경우의 수를 1,000,000,007(=109+7)로 나눈 나머지를 출력한다. www.acmicpc.net 기본 dp문제였습니다. 📕 풀이방법 📔 입력 및 초기화 1. i행, j열에 도달할 경우의 수를 저장하기 위한 이차원 배열 d와 n, m을 선언합니다. 2. d의 모든 원소들을 -1로 초기화해줍니다. 3. n, m을 입력해줍니다. 📔 풀이과정 1. dp함수를 수행합니다. 2. n행 m열에서 출발해 역(1행 1열)로 거슬러 올라가며 dp함수를 호출합니다. 3. 1행 1열에 알맞게 도착했다면 1을, 열..
(C++) - 백준(BOJ) 17478번 : 재귀함수가 뭔가요? https://www.acmicpc.net/problem/17478 17478번: 재귀함수가 뭔가요? 평소에 질문을 잘 받아주기로 유명한 중앙대학교의 JH 교수님은 학생들로부터 재귀함수가 무엇인지에 대하여 많은 질문을 받아왔다. 매번 질문을 잘 받아주셨던 JH 교수님이지만 그는 중앙대 www.acmicpc.net 재귀함수를 이해하기 좋은 문제였습니다. 📕 풀이방법 📔 입력 및 초기화 n을 입력받습니다. 📔 풀이과정 1. 기저 조건 세우기 : depth == n이면 출력 후 종료합니다. 2. 재귀 수행 : dfs함수 호출 전 본문 출력하고, dfs함수 호출 합니다. dfs함수가 종료되면 "라고 답변하였지."를 출력합니다. 📕 Code //재귀함수가 뭔가요? #include using namespace st..
(C++) - 백준(BOJ) 16954번 : 움직이는 미로 탈출 https://www.acmicpc.net/problem/16954 16954번: 움직이는 미로 탈출 욱제는 학교 숙제로 크기가 8×8인 체스판에서 탈출하는 게임을 만들었다. 체스판의 모든 칸은 빈 칸 또는 벽 중 하나이다. 욱제의 캐릭터는 가장 왼쪽 아랫 칸에 있고, 이 캐릭터는 가장 오른쪽 www.acmicpc.net bfs문제였습니다. 📕 풀이방법 📔 입력 및 초기화 string 배열 chess에 체스판을 입력받습니다. 9방향 (상, 하, 좌, 우, 대각선 4방향, 가만히 있기)를 살펴보기 위한 일차원 배열 dr, dc를 선언합니다. 📔 풀이과정 고정된 미로를 탐색하는 bfs방식이 아닌 벽이 한 줄씩 내려오는 특성이 있습니다. 따라서 brute force방식으로 편하게 모든 경우의 수를 탐색하고 싶..
(C++) - 백준(BOJ) 16926번 : 배열 돌리기 1 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 구현(simulation) 문제였습니다. 📕 풀이방법 📔 입력 및 초기화 n, m, r입력 후 n행 m열에 대해 매번 수를 입력받고 이차원 배열 arr에 저장합니다. 📔 풀이과정 좌상의 점, 우하의 점 이 두개의 점을 특정짓는다면 사각형이 그려집니다. 이 사각형의 테두리를 min(m,n)/2번 특정지어 ..
(C++) - 프로그래머스(위클리 챌린지) : 4주차 https://programmers.co.kr/learn/courses/30/lessons/84325 코딩테스트 연습 - 4주차 개발자가 사용하는 언어와 언어 선호도를 입력하면 그에 맞는 직업군을 추천해주는 알고리즘을 개발하려고 합니다. 아래 표는 5개 직업군 별로 많이 사용하는 5개 언어에 직업군 언어 점수를 부 programmers.co.kr 자료구조를 사용해보는 문제였습니다. 📕 풀이방법 📔 입력 및 초기화 각 직군별 언어와 점수가 저장된 table, 질의를 하는 언어가 담긴 languages, 해당 언어의 선호도가 저장된 preference를 solution함수의 parameter로 받습니다. 📔 풀이과정 1. table의 직군별 언어들과 그 언어의 점수를 map변수 tableMap에 저장합니다...
(C++) - 프로그래머스(위클리 챌린지) : 3주차 https://programmers.co.kr/learn/courses/30/lessons/84021 코딩테스트 연습 - 3주차 [[1,1,0,0,1,0],[0,0,1,0,1,0],[0,1,1,0,0,1],[1,1,0,1,1,1],[1,0,0,0,1,0],[0,1,1,1,0,0]] [[1,0,0,1,1,0],[1,0,1,0,1,0],[0,1,1,0,1,1],[0,0,1,0,0,0],[1,1,0,1,1,0],[0,1,0,0,0,0]] 14 [[0,0,0],[1,1,0],[1,1,1]] [[1,1,1],[1,0,0],[0,0,0]] 0 programmers.co.kr bfs를 이용한 구현이었습니다. 📕 풀이방법 크게 해야할 일은 다음과 같습니다. 1. game_board에서 빈 곳 찾기, 찾았다면 모양 알아..
(C++) - 백준(BOJ) 15565번 : 귀여운 라이언 https://www.acmicpc.net/problem/15565 15565번: 귀여운 라이언 꿀귀 라이언 인형과, 마찬가지로 꿀귀인 어피치 인형이 N개 일렬로 놓여 있다. 라이언 인형은 1, 어피치 인형은 2로 표현하자. 라이언 인형이 K개 이상 있는 가장 작은 연속된 인형들의 집합의 www.acmicpc.net 연속합 문제였습니다. 📕 풀이방법 📔 입력 및 초기화 어피치 인형은 확인할 필요가 없습니다. 라이언 인형의 위치만 저장해 확인합니다. n, k를 입력해서 이를 vector 변수 lionIdx에 저장합니다. 📔 풀이과정 저장된 라이언 인형들의 인덱스 정보들만 확인해줍니다. 예제를 통해 설명하자면 저장된 인덱스들의 정보는 이렇습니다. lionIdx = [0, 4, 6, 9]여기서 k를 포함하는 ..