본문 바로가기

C++105

[C++] 백준 1158번 : 요세푸스 문제 https://www.acmicpc.net/problem/1158 1158번: 요세푸스 문제 첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 5,000) www.acmicpc.net 문제 풀이 https://codinghejow.tistory.com/91와 같은 문제이다! 느낀 점 이번에 코테 준비를 하면서 다시 풀어봤던 문제이다. 이번에 한번 정리함으로써 큐에 대한 이해도가 확실하게 향상된 것 같다. 코드 #include #include using namespace std; int n, k; queue q; void func(int n, int k) { for (int i = 1; i 2021. 9. 24.
[C++] 프로그래머스 : 카카오프렌즈 컬러링북 https://programmers.co.kr/learn/courses/30/lessons/1829 코딩테스트 연습 - 카카오프렌즈 컬러링북 6 4 [[1, 1, 1, 0], [1, 2, 2, 0], [1, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 3], [0, 0, 0, 3]] [4, 5] programmers.co.kr 문제 풀이 기본적인 BFS 문제이다. BFS에 최대 범위와 map 그리고 시작 좌표를 입력받고 target 값과 같은 값을 찾는다. target 값과 같다면 해당 영역의 사이즈를 늘려주고 return 해주면 된다. BFS에는 방문 여부가 필수이므로 memset을 통해서 vistied의 값을 초기화해준다. 느낀 점 백준에서 풀었던 아기 상어 문제가 많이 도움이 되었다.. 2021. 9. 22.
[C++] 프로그래머스 : 오픈채팅방 https://programmers.co.kr/learn/courses/30/lessons/42888 코딩테스트 연습 - 오픈채팅방 오픈채팅방 카카오톡 오픈채팅방에서는 친구가 아닌 사람들과 대화를 할 수 있는데, 본래 닉네임이 아닌 가상의 닉네임을 사용하여 채팅방에 들어갈 수 있다. 신입사원인 김크루는 카카오톡 오 programmers.co.kr 문제 풀이 가장 중요한 것은 중간 과정이 필요가 없어 최종 로그만 보이면 된다는 것이다. ID 자체는 중복이 되면 안 되니 맵을 사용 해 ID : 별명 정보를 저장하였고, 벡터에는 ID : 명령 을 저장해서 최종 로그의 명령을 저장한다. stringstream을 이용해서 string을 잘라준다. tmp에는 명령어, id, 별명 순서로 저장되어 있다. 반복문을 통.. 2021. 9. 21.
[C++] 프로그래머스 : 문자열 압축 https://programmers.co.kr/learn/courses/30/lessons/60057 코딩테스트 연습 - 문자열 압축 데이터 처리 전문가가 되고 싶은 "어피치"는 문자열을 압축하는 방법에 대해 공부를 하고 있습니다. 최근에 대량의 데이터 처리를 위한 간단한 비손실 압축 방법에 대해 공부를 하고 있는데, 문 programmers.co.kr 문제 풀이 브루트 포스로 접근했다! 첫 반복문의 최대 반복 회수는 입력받은 문자열의 반만큼인데, 단위가 입력받은 문자열의 길이의 반 이상이라면 압축하는 의미가 없기 때문이다. 다음 반복문에선 비교를 통해서 반복되는지 확인해준다. 같다면 압축 회수(=cnt)를 증가시키고 아니라면 str에 입력해준다. 최종적으론 현재 answer와 str의 길이를 비교해서 .. 2021. 9. 20.
[C++] 백준 16236번 : 아기 상어 https://www.acmicpc.net/problem/16236 16236번: 아기 상어 N×N 크기의 공간에 물고기 M마리와 아기 상어 1마리가 있다. 공간은 1×1 크기의 정사각형 칸으로 나누어져 있다. 한 칸에는 물고기가 최대 1마리 존재한다. 아기 상어와 물고기는 모두 크기를 가 www.acmicpc.net 문제 풀이 문제에서 중요한 것은 2가지이다. 바로, BFS 구현과 우선순위를 정하는 것. 아기 상어의 정보와 물고기의 정보를 구조체로 구현했다. 구조체라는 틀에서 모든 정보를 가지기 위함이다. 함수 BFS에서는 배열 dx와 dy를 통해서 상하좌우를 한 칸씩 탐색한다. 탐색 도중에 나올 수 있는 경우는 4가지로, 1. 빈 칸인 경우 : 방문했음을 체크하고, 이동거리만 추가해준다. 2. 아기상.. 2021. 9. 15.
[C++] 프로그래머스 : 약수의 개수와 덧셈 https://programmers.co.kr/learn/courses/30/lessons/77884?language=cpp 코딩테스트 연습 - 약수의 개수와 덧셈 두 정수 left와 right가 매개변수로 주어집니다. left부터 right까지의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 return 하도록 solution 함수를 완성해주 programmers.co.kr 문제 풀이 시작값부터 종료값까지의 약수의 개수만 카운트해주면 되는 문제이다. 느낀 점 입력값의 범위가 매우 작아서 단순한 브루트 포스로 해결할 수 있었다, 쉬운 문제라서 많이 고민하지 않았다. 코드 using namespace std; int solution(int left, int ri.. 2021. 9. 13.