본문 바로가기

전체 글

(2344)
(C++) - 백준(BOJ) 1021번 : 회전하는 큐 답 www.acmicpc.net/problem/1021 1021번: 회전하는 큐 첫째 줄에 큐의 크기 N과 뽑아내려고 하는 수의 개수 M이 주어진다. N은 50보다 작거나 같은 자연수이고, M은 N보다 작거나 같은 자연수이다. 둘째 줄에는 지민이가 뽑아내려고 하는 수의 위치가 www.acmicpc.net deque을 구현하는 문제였습니다. 풀이방법 1. 뽑을 값을 찾을때까지 왼쪽으로 옮겨봅니다. 2. 왼쪽으로 옮기는 연산의 개수를 저장합니다. 3. 해당 개수만큼 원상복귀(우측이동)시켜줍니다. 4. 다시 뽑을 값을 찾을때까지 오른쪽으로 옮겨봅니다. 5. 오른쪽으로 옮기는 연산의 개수를 저장합니다. 6. 해당 개수만큼 원상복귀(좌측이동)시켜줍니다. 7. 더 적은 연산 개수에 해당하는 방향으로 옮겨주고 값을 po..
(C++) - 백준(BOJ) 14891번 : 톱니바퀴 답 www.acmicpc.net/problem/14891 14891번: 톱니바퀴 총 8개의 톱니를 가지고 있는 톱니바퀴 4개가 아래 그림과 같이 일렬로 놓여져 있다. 또, 톱니는 N극 또는 S극 중 하나를 나타내고 있다. 톱니바퀴에는 번호가 매겨져 있는데, 가장 왼쪽 톱니바퀴 www.acmicpc.net simulation 문제였습니다. 풀이방법 1. 매 k 마다 다음을 수행합니다. 1-1. 4개의 톱니바퀴에 대한 회전 방향 계산 후 배열 저장 1-2. 회전 방향 정보대로 톱니바퀴 회전 1-3. 회전 방향 저장 된 배열 초기화 2. 점수 계산 후 출력 Code #include using namespace std; int direction[4]; vector gear; vector getGearVector(s..
(C++) - 백준(BOJ) 13300번 : 방 배정 답 www.acmicpc.net/problem/13300 13300번: 방 배정 표준 입력으로 다음 정보가 주어진다. 첫 번째 줄에는 수학여행에 참가하는 학생 수를 나타내는 정수 N(1 ≤ N ≤ 1,000)과 한 방에 배정할 수 있는 최대 인원 수 K(1 > n >> k; for(int i = ..
(C++) - 백준(BOJ) 1051번 : 숫자 정사각형 답 www.acmicpc.net/problem/1051 1051번: 숫자 정사각형 N*M크기의 직사각형이 있다. 각 칸은 한 자리 숫자가 적혀 있다. 이 직사각형에서 꼭짓점에 쓰여 있는 수가 모두 같은 가장 큰 정사각형을 찾는 프로그램을 작성하시오. 이때, 정사각형은 행 또는 www.acmicpc.net 간단한 구현문제였습니다. 풀이방법 모든 길이에 대해 정사각형을 만들어본 후 꼭지점들의 값이 같으면 가장 긴 길이로 갱신해줍니다. Code #include using namespace std; int n, m; char square[51][51]; int main(){ cin >> n >> m; int length = max(n,m); int ans = 1; for(int i = 1; i square[i][j..
(C++) - 백준(BOJ) 2851번 : 슈퍼마리오 답 www.acmicpc.net/problem/2851 2851번: 슈퍼 마리오 첫째 줄에 마리오가 받는 점수를 출력한다. 만약 100에 가까운 수가 2개라면 (예: 98, 102) 마리오는 큰 값을 선택한다. www.acmicpc.net 버섯 먹는 것을 중단해야할 때를 잘 처리해줘야되는 문제입니다. 풀이방법 1. 100과의 차이 계산 : 현재버섯을 먹었을 때 100과의 차이, 현재 ans에 저장된 변수의 값과 100의 차이를 구해줍니다. 2. ans값 갱신여부 판단 2-1. 만약 ans의 gap(차이)가 더 크다면 현재 버섯을 먹는것이 이득이므로 ans값을 sum으로 갱신해줍니다. 2-2. 만약 100과의 차이가 서로 같다면 더 큰 값을 ans변수로 갱신해줍니다. 3. 답 출력 Code #include u..
(C++) - 백준(BOJ) 18312번 : 시각 답 www.acmicpc.net/problem/18312 18312번: 시각 정수 N과 K가 입력되었을 때 00시 00분 00초부터 N시 59분 59초까지의 모든 시각 중에서 K가 하나라도 포함되는 모든 시각을 세는 프로그램을 작성하시오. 시각을 셀 때는 디지털 시계를 기준으로, www.acmicpc.net 간단한 문자열 처리(시간) 문제였습니다. 풀이방법 1. 한계시간 (n시 59분 59초)을 초로 환산한 범위까지 loop를 돌립니다. 2. 하나의 초로 된 한계시간을 다시 00(시)00(분)00(초)의 문자열 형태로 환산합니다. 3. k를 문자열로 환산한 뒤 환산된 한계시간 중 있는 문자열인지 확인해줍니다. 찾았으면 answer++ 4. answer를 출력합니다. Code #include using nam..
(C++) - 프로그래머스(2018 KAKAO BLIND) : [1차] 셔틀버스 답 programmers.co.kr/learn/courses/30/lessons/17678 코딩테스트 연습 - [1차] 셔틀버스 10 60 45 [23:59,23:59, 23:59, 23:59, 23:59, 23:59, 23:59, 23:59, 23:59, 23:59, 23:59, 23:59, 23:59, 23:59, 23:59, 23:59] 18:00 programmers.co.kr 구현을 통해 적절히 시간계산 하는 문제였습니다. 풀이방법 1. 문자열 정리 : "09:01"식으로 되어있는 timetable배열을 시간계산의 편리성을 위해 새로운 vector timeInt 변수에 계산을 통해 분으로 바꾸고 저장합니다. 그 후 오름차순으로 정렬합니다. 2. 한 번의 버스 운행에 탑승하는 인원 계산 : 0번째 운..
(C++) - 프로그래머스(찾아라 프로그래밍 마에스트로) : 폰켓몬 답 programmers.co.kr/learn/courses/30/lessons/1845 코딩테스트 연습 - 폰켓몬 당신은 폰켓몬을 잡기 위한 오랜 여행 끝에, 홍 박사님의 연구실에 도착했습니다. 홍 박사님은 당신에게 자신의 연구실에 있는 총 N 마리의 폰켓몬 중에서 N/2마리를 가져가도 좋다고 했습니다. programmers.co.kr 풀이방법 1. 수의 종류를 구합니다. 2. nums의 size/2와 수의 종류 중 작은 수를 반환해줍니다. Code #include #include using namespace std; int cnt[200001]; int solution(vector nums) { int answer = 0; int size = nums.size(); int category = 0; for..