목록분류 전체보기 (370)
GitHubSeob

문제 https://programmers.co.kr/learn/courses/30/lessons/12916 코딩테스트 연습 - 문자열 내 p와 y의 개수 대문자와 소문자가 섞여있는 문자열 s가 주어집니다. s에 'p'의 개수와 'y'의 개수를 비교해 같으면 True, 다르면 False를 return 하는 solution를 완성하세요. 'p', 'y' 모두 하나도 없는 경우는 항상 True를 programmers.co.kr 문제풀이 0부터 s의 크기만큼 반복하면서 p or P, y or Y를 찾으면 각각 변수에 +1을 해준다. p와 y가 다르면 answer = false이고, 같으면 answer = true가 된다. 코드 #include #include using namespace std; bool sol..

문제 https://programmers.co.kr/learn/courses/30/lessons/12915 코딩테스트 연습 - 문자열 내 마음대로 정렬하기 문자열로 구성된 리스트 strings와, 정수 n이 주어졌을 때, 각 문자열의 인덱스 n번째 글자를 기준으로 오름차순 정렬하려 합니다. 예를 들어 strings가 ["sun", "bed", "car"]이고 n이 1이면 각 단어의 인덱 programmers.co.kr 문제풀이 algorithm의 sort를 이용하여 정렬을 하면 된다. 따로 compare함수를 만들어서 idx번째 순으로 정렬을 하게 한다, 둘이 같을 경우 사전 순으로 정렬을 한다. 코드 #include #include #include using namespace std; int idx; ..

문제 https://programmers.co.kr/learn/courses/30/lessons/12912 코딩테스트 연습 - 두 정수 사이의 합 두 정수 a, b가 주어졌을 때 a와 b 사이에 속한 모든 정수의 합을 리턴하는 함수, solution을 완성하세요. 예를 들어 a = 3, b = 5인 경우, 3 + 4 + 5 = 12이므로 12를 리턴합니다. 제한 조건 a와 b가 같은 경우 programmers.co.kr 문제풀이 a, b 중 적은 수부터 큰 수까지의 합을 return 하면 된다. 만약 a>b이면 swap을 하여 값을 바꾼다. a부터 b까지의 합을 answer에 더하고 return 한다. 코드 #include #include using namespace std; long long solut..

문제 https://programmers.co.kr/learn/courses/30/lessons/17682 코딩테스트 연습 - [1차] 다트 게임 programmers.co.kr 문제풀이 다트를 총 세 번 던진다. 다트는 0점부터 10점까지 맞힐 수 있다. S는 1 제곱, D는 2 제곱, T은 3 제곱이다. 상은 *또는 # 또는 없을 수도 있다. *은 이전 값과 현재 값에 *2를 해준다. #은 현재 값에 *-1을 해준다. 1. 숫자 먼저 분류해서 score벡터에 저장한다. 2. S, D, T를 구분하여 score에 제곱을 해준다. 3. 현재 값이 idx이고, *이 있다면, score[idx-1]과 score[idx] 값에 *2를 한다. 4. 현재 값이 idx이고, #이 있다면, score[idx]에 *-..

문제 https://www.acmicpc.net/problem/11399 11399번: ATM 첫째 줄에 사람의 수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 각 사람이 돈을 인출하는데 걸리는 시간 Pi가 주어진다. (1 ≤ Pi ≤ 1,000) www.acmicpc.net 문제풀이 돈을 뽑는 시간 + 누적 시간을 계속해서 더하면 된다. 시간이 적게 걸리는 순으로 정렬을 한 뒤 시간을 누적시키기만 하면 된다. 코드 #include #include #include using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(NULL); int N = 0; int idx = 0; int acc = 0; int answer = 0;..

문제 https://www.acmicpc.net/problem/1931 1931번: 회의실 배정 (1,4), (5,7), (8,11), (12,14) 를 이용할 수 있다. www.acmicpc.net 문제풀이 시작시간순, 시작시간이 같다면 더 일찍 끝나는 순으로 정렬을 한다. 회의는 최소 한 번이므로 회의 개수를 1로 시작한다. 가장 빠르게 시작하면서 일찍 끝나는 회의의 시작시간을 front, 종료시간을 back으로 둔다. 모든 회의시간을 돌면서 back보다 종료시간이 빠른 회의가 있으면 back을 바꾼다. 회의 시작시간이 back 이상이면 회의 개수를 1 증가시키고 back을 해당 회의의 종료시간으로 바꾼다. 코드 #include #include #include using namespace std; b..

문제 https://www.acmicpc.net/problem/1783 1783번: 병든 나이트 첫째 줄에 체스판의 세로 길이 N와 가로 길이 M이 주어진다. N과 M은 2,000,000,000보다 작거나 같은 자연수이다. www.acmicpc.net 문제풀이 1. 처음 위치한 곳도 방문한 칸에 포함한다. 2. 이동 횟수가 3번 이하이면 네 가지 규칙 중에 마음대로 써서 움직일 수 있다. 3. 4번 이상일 경우는 네 가지 규칙을 모두 최소 한 번씩 썼으면 그 뒤로는 맘대로 골라 움직일 수 있다. 4. 4번 이상이고 네 가지 규칙 중 안 쓴 것이 있으면 규칙을 지켜야 한다. N=1이면 현재 위치한 칸 말고는 갈 수 있는 칸이 없으므로 1이다. N=2이면 2, 3번 규칙만 사용할 수 있으므로 가로 칸에 따라..

문제 https://www.acmicpc.net/problem/10610 10610번: 30 어느 날, 미르코는 우연히 길거리에서 양수 N을 보았다. 미르코는 30이란 수를 존경하기 때문에, 그는 길거리에서 찾은 수에 포함된 숫자들을 섞어 30의 배수가 되는 가장 큰 수를 만들고 싶어한 www.acmicpc.net 문제풀이 30의 배수이기 때문에 끝자리는 무조건 0이다. 0을 제외하고 3의 배수가 되는지만 확인하면 되는 문제이다. 3의 배수가 되는 조건은 각 자리의 숫자들의 합이 3의 배수일 때이다. 따라서 각 자리 숫자들을 더한 합이 3의 배수이고, 숫자들 중에 0이 하나 이상 있는지만 판별하면 된다. 코드 #include #include using namespace std; int main() { i..

문제 https://www.acmicpc.net/problem/2875 2875번: 대회 or 인턴 첫째 줄에 N, M, K가 순서대로 주어진다. (0 ≤ M ≤ 100, 0 ≤ N ≤ 100, 0 ≤ K ≤ M+N), www.acmicpc.net 문제풀이 먼저 구성할 수 있는 팀의 수를 구한다. 여학생을 2로 나눈 몫 or 남학생 수 중 적은 수가 팀의 수가 된다. 하지만 인턴쉽에 참여하는 학생도 따로 있어야 한다. 그러므로 팀을 못 꾸린 혼자 남은 학생들의 수를 구한다. 인턴쉽에 참여해야 하는 수 - 혼자 남은 학생수를 하고, 그 값이 0 이하라면 혼자 남아있는 학생들만으로도 인턴쉽에 나갈 수 있으므로 팀의 수를 출력한다. 그 값이 0보다 크다면 팀 수 - K/3을 올림 한 값을 하여 출력한다. K는..