본문 바로가기

Algorithm/Implementation

(750)
(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++) - 프로그래머스(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..
(C++) - 프로그래머스(2017 팁스타운) : 짝지어 제거하기 답 programmers.co.kr/learn/courses/30/lessons/12973?language=cpp 코딩테스트 연습 - 짝지어 제거하기 짝지어 제거하기는, 알파벳 소문자로 이루어진 문자열을 가지고 시작합니다. 먼저 문자열에서 같은 알파벳이 2개 붙어 있는 짝을 찾습니다. 그다음, 그 둘을 제거한 뒤, 앞뒤로 문자열을 이어 붙 programmers.co.kr 풀이방법 1. 스택이 비어있다면 push 2. 스택이 비어있지않다면 2-1. top과 현재 비교하는 문자가 같으면 pop합니다. 2-2. 다르면 stack에 push합니다. Code #include #include #include using namespace std; int solution(string s) { stack pairing; i..
(Javascript) - 프로그래머스(월간코드챌린지) : 이진 변환 반복하기 답 programmers.co.kr/learn/courses/30/lessons/70129 코딩테스트 연습 - 이진 변환 반복하기 programmers.co.kr 풀이방법 1. 문자열에서 '0'을 제거합니다. 2. 제거한 0의 개수를 세고 answer배열을 갱신합니다. 3. 기존 문자열을 남은 1의 길이를 이진법으로 바꾼 문자열로 바꾸고 '1'인지 비교합니다. 4. 갱신된 문자열이 '1'이라면 루프를 탈출해 반환합니다. Code function removeZero(convertedWord, answer) { let tmp = ""; for (let i = 0; i < convertedWord.length; i++) { if (convertedWord[i] !== "0") tmp += convertedWord..
(C++, Javascript) - 프로그래머스(Summer/Winter Coding(~2018)) : 소수만들기 programmers.co.kr/learn/courses/30/lessons/12977 코딩테스트 연습 - 소수 만들기 주어진 숫자 중 3개의 수를 더했을 때 소수가 되는 경우의 개수를 구하려고 합니다. 숫자들이 들어있는 배열 nums가 매개변수로 주어질 때, nums에 있는 숫자들 중 서로 다른 3개를 골라 더했을 때 programmers.co.kr 소수 판별, 조합 구현 문제였습니다. 풀이방법 1. 3개의 수를 조합(순서 상관 O)으로 뽑은 후 세 수를 더한 값을 구합니다. 2. 해당 값으로 미리 1만까지의 자연수에 대한 소수여부를 판별한 배열과 대조해 소수여부를 판별합니다 : 에라토스테네스의 체 (시간복잡도 O(N루트N)) Code C++ #include #include using namespace..