문제풀이
[C++ 백준] 5622 다이얼
[C++ 백준] 5622 다이얼
2021.05.14블로그에 올리는 모든 문제 풀이는 깃허브에 올려져 있습니다. 문제 설명 전화를 걸 때, 숫자 1은 2초의 시간이 필요하며, 한 칸 옆에 있는 숫자를 걸기 위해선 1초씩 추가된다. 첫째 줄에 알파벳 대문자로 이루어진 단어가 주어진다. (단어의 길이는 2보다 크거나 같고, 15보다 적거나 같다.) 각 문자를 숫자에 대응했을 때, 이 전화를 걸기 위해서 필요한 최소 시간을 구하는 프로그램을 작성하시오. 풀이 전략 각 문자가 입력받는데 걸리는 시간을 배열에 저장 후 계산 소스 코드 #include #include using namespace std; int main() { int times[] = { 3,3,3,4,4,4,5,5,5,6,6,6,7,7,7,8,8,8,8,9,9,9,10,10,10,10 }; int..
[C++ 백준] 2675 문자열 반복
[C++ 백준] 2675 문자열 반복
2021.05.12블로그에 올리는 모든 문제 풀이는 깃허브에 올려져 있습니다. 문제 설명 첫째 줄에 테스트 케이스의 개수 T(1 count; cin >> str; for (int j = 0; j < str.length(); j++) { for (int k = 0; k < count; k++) { cout
[C++ 백준] 1157 단어 공부
[C++ 백준] 1157 단어 공부
2021.02.02블로그에 올리는 모든 문제 풀이는 깃허브에 올려져 있습니다. 문제 설명 첫째 줄에 알파벳 대소문자로 이루어진 단어가 주어진다. 주어지는 단어의 길이는 1,000,000을 넘지 않는다. 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 가장 많이 사용된 알파벳이 여러 개 존재하는 경우에는 ?를 출력한다. 풀이 전략 아스키코드를 활용해서 대소문자 변환 배열을 이용하여 최대 개수 알파벳 구하기 소스 코드 #include #include using namespace std; int main() { string str; int arr[26] = { 0, }; int max = 0; char c = '?'; cin >> str; for (char c : str) { if ('a'
[C++ 백준] 4344 평균은 넘겠지
[C++ 백준] 4344 평균은 넘겠지
2021.01.09블로그에 올리는 모든 문제 풀이는 깃허브에 올려져 있습니다. 문제 설명 테스트 케이스 개수 C가 주어진다. 각 테스트 케이스마다 학생의 수 N(1 > x; int arr[1000]; for (int j = 0; j > arr[j]; sum += arr[j]; } double avg = ( sum / (double)x ); for (int j = 0; j < x; j++) { if (avg < arr[j]) count++; } cout
[C++ 백준] 11004 K번째 수
[C++ 백준] 11004 K번째 수
2020.12.11블로그에 올리는 모든 문제 풀이는 깃허브에 올려져 있습니다. 문제 설명 첫째 줄에 N(1
[C++ 백준] 1712 손익분기점
[C++ 백준] 1712 손익분기점
2020.11.04블로그에 올리는 모든 문제 풀이는 깃허브에 올려져 있습니다. 문제 설명 A의 고정비용과 1대의 노트북을 생산하는데 드는 가변비용 B, 한대 판매했을 때의 가격 C가 주어졌을 때 손익분기점을 구하는 프로그램을 작성하시오. 손익분기점(Break-Even Point): 최초로 총 수입이 총비용보다 많아져 이익이 발생하는 지점 첫 번째 줄에 손익분기점을 출력. 손익분기점이 존재하지 않으면 -1 출력 풀이 전략 손익분기점이 존재하지 않는 상황에 대한 판별 포인트는 얼만큼 이익이 나서 기본비용을 메꾸느냐 이다. 이를 식으로 계산하면 기본비용/(판매비용-제작비용)이라고 할 수 있다. 손익분기점을 넘겨야 하기 때문에 +1 함 소스 코드 #include using namespace std; int main() { int..
[C++ 백준] 10809 알파벳 찾기
[C++ 백준] 10809 알파벳 찾기
2020.08.23블로그에 올리는 모든 문제 풀이는 깃허브에 올려져 있습니다. 문제 설명 알파벳 소문자로만 이루어진 단어 S가 주어진다. 단어의 길이는 100을 넘지 않으며, 알파벳 소문자로만 이루어져 있다. 각각의 알파벳에 대해서, 단어에 포함되어 있는 경우에는 처음 등장하는 위치를, 포함되어 있지 않은 경우에는 -1을 출력하는 프로그램을 작성하시오. 풀이 전략 알파벳은 모두 소문자로 이루어져 있기에 a의 아스키코드 값을 기준으로 잡은 뒤 계산했다. 입력값을 아스키코드로 바꿔 해당 문자가 몇 번째의 알파벳인지 확인했다. 입력값-기준값 = a-z에서 해당 문자의 위치 string에서 해당 문자의 인덱스 값이 결과의 값이 되게 구현했다. 소스 코드 #include #include using namespace std; int..
[C++ 백준] 10989 수 정렬하기 3
[C++ 백준] 10989 수 정렬하기 3
2020.07.26블로그에 올리는 모든 문제 풀이는 깃허브에 올려져 있습니다. 문제 설명 N(1 n; int arr[ 10001 ] = { 0 }; for ( int i = 0; i > x; arr[ x ] += 1; } for ( int i = 0; i < 10001; i++ ) { if ( arr[ i ] == 0 ) continue; for ( int j = 0; j < arr[ i ]; j++ ) { cout
[C++ 백준] 2751 수 정렬하기 2
[C++ 백준] 2751 수 정렬하기 2
2020.07.22블로그에 올리는 모든 문제 풀이는 깃허브에 올려져 있습니다. 문제 설명 첫째 줄에 수의 개수 N(1 n; vector vec; for ( int i = 0; i > x; vec.push_back( x ); } sort( vec.begin(), vec.end() ); for ( int x : vec ) { cout
[C++ 백준] 1874 스택 수열
[C++ 백준] 1874 스택 수열
2020.07.08블로그에 올리는 모든 문제 풀이는 깃허브에 올려져 있습니다. 문제 설명 첫 줄에 n (1 ≤ n ≤ 100,000)이 주어진다. 둘째 줄부터 n개의 줄에는 수열을 이루는 1 이상 n이하의 정수가 하나씩 순서대로 주어진다. 물론 같은 정수가 두 번 나오는 일은 없다. 풀이 전략 입력한 값까지 수를 순서대로 쌓는다. (스택 사용) 스택에 들어간 마지막 숫자와 입력한 숫자가 같다면 빼낸다. 같지 않다면 불가능!! 결과를 출력 할 때 endl로 인한 시간 초과가 나서 특수문자 '\n'을 사용하였다. 소스 코드 #include #include #include using namespace std; int main() { stack s; vector result; int cnt = 1; int n; cin >> n;..
[C++ 백준] 11650 좌표 정렬하기
[C++ 백준] 11650 좌표 정렬하기
2020.06.25블로그에 올리는 모든 문제 풀이는 깃허브에 올려져 있습니다. 문제 설명 첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다. 풀이 전략 x, y 좌표의 맵핑 정렬 기준 1. x좌표 정렬 2. (x좌표 동일 시) y좌표 정렬 10814번 문제와 유사하다. 하지만 이번엔 multimap이 아닌 vector의 타입으로 pair를 사용하고, sort를 커스텀해서 풀어보았다. 소스 코드 #include #include #include using namespace std; bool compare( pair a, pair b ) {..
[C++ 백준] 10814 나이순 정렬
[C++ 백준] 10814 나이순 정렬
2020.06.25블로그에 올리는 모든 문제 풀이는 깃허브에 올려져 있습니다. 문제 설명 첫째 줄에 온라인 저지 회원의 수 N이 주어진다. (1 ≤ N ≤ 100,000) 둘째 줄부터 N개의 줄에는 각 회원의 나이와 이름이 공백으로 구분되어 주어진다. 나이는 1보다 크거나 같으며, 200보다 작거나 같은 정수이고, 이름은 알파벳 대소문자로 이루어져 있고, 길이가 100보다 작거나 같은 문자열이다. 입력은 가입한 순서로 주어진다. 풀이 전략 나이와 이름의 맵핑을 중점으로 생각하였다. 키로 사용한 나이가 중복될 수 있으므로 map이 아닌 여러 키를 가질 수 있는 multimap을 사용하였다. 소스 코드 #include #include #include using namespace std; int main() { multimap..