Computer Science/C++ 38

백준 C++ | #10 BOJ10773 제로 C++ 문제 풀이

10773번: 제로 (acmicpc.net) 10773번: 제로 첫 번째 줄에 정수 K가 주어진다. (1 ≤ K ≤ 100,000) 이후 K개의 줄에 정수가 1개씩 주어진다. 정수는 0에서 1,000,000 사이의 값을 가지며, 정수가 "0" 일 경우에는 가장 최근에 쓴 수를 지우고, 아닐 경 www.acmicpc.net 처음으로 풀어본 STL 문제였다. 문제를 풀면서 어떻게 공백('\n')을 받아 루프를 멈출지를 엄청 고민했는데, c++ - 빈 줄까지 파일 읽기 - 스택 오버플로 (stackoverflow.com) C++ string을 int로 변경하는 방법 (tistory.com) 알고보니 첫 입력으로 입력의 개수가 주어져 for문으로 구현하면 되었다. #include #include #include..

백준 C++ | #9 BOJ4344 평균은 넘겠지 C++ 문제 풀이

4344번: 평균은 넘겠지 (acmicpc.net) 4344번: 평균은 넘겠지 대학생 새내기들의 90%는 자신이 반에서 평균은 넘는다고 생각한다. 당신은 그들에게 슬픈 진실을 알려줘야 한다. www.acmicpc.net "대학생 새내기 90%는 자신이 반에서 평균은 넘는다고 생각한다."로 시작하는 슬픈 문제 테스트케이스 사이즈에 맞게 배열을 생성해서 학생들의 점수를 입력받고, 평균을 넘는 케이스의 비율을 계산해주면 된다. 제출했을 때 컴파일에러가 발생했는데, 이건 int로 계산해주어야 하는 배열의 크기 변수를 double로 정의해서 생긴 문제였다. double* a = new double[array_size] 이 부분에서 array_size 변수가 double이라 컴파일 에러가 난 것. 참고. 프로그래밍..

백준 C++ | #8 BOJ3048 개미 C++ 문제 풀이

3048번: 개미 (acmicpc.net) 왼쪽에서 오른쪽으로 이동하는 개미 사이 사이에 오른쪽에서 왼쪽으로 이동하는 개미 그룹이 들어간다는 발상으로 풀었다. 예를 들면, A B C 와 D E F가 만나는 상황에서 _ A _ B _ C _ 네 개의 빈칸에 DEF가 들어간다. 이 네 개의 빈칸을 벡터로 만들어 T초에 맞게 코드를 짰다. 다 풀고나서 제출했더니 메모리 초과 문제가 발생하였다. 알고보니 j=0으로 시작하는 for 문에서 j-1 indexing을 해서 생긴 문제였다. j=1부터 시작하는 것으로 바꾸어서 해결했다. #include #include #include #include int main() { // 첫번째 그룹, 두번째 그룹의 사이즈 int n1, n2; std::string ant1_tm..

백준 C++ | #7 BOJ1018 체스판 다시 칠하기 C++ 문제 풀이

1018번: 체스판 다시 칠하기 (acmicpc.net) 1018번: 체스판 다시 칠하기 첫째 줄에 N과 M이 주어진다. N과 M은 8보다 크거나 같고, 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 보드의 각 행의 상태가 주어진다. B는 검은색이며, W는 흰색이다. www.acmicpc.net #include #include int main() { // input int n, m; std::cin >> n >> m; char** chess = new char* [n]; for (int i = 0; i < n; i++) { chess[i] = new char[m]; } char getline; for (int i = 0; i < n; i++) { for (int j = 0; j < m; j..

백준 C++ | #6 BOJ11508 2+1 세일 C++ 풀이

11508번: 2+1 세일 (acmicpc.net) 11508번: 2+1 세일 KSG 편의점에서는 과일우유, 드링킹요구르트 등의 유제품을 '2+1 세일'하는 행사를 하고 있습니다. KSG 편의점에서 유제품 3개를 한 번에 산다면 그중에서 가장 싼 것은 무료로 지불하고 나머지 두 www.acmicpc.net #include #include #include bool compae(int i, int j) { return j > n; std::vector lst(n); int tmp = 0; for (int i = 0; i > tmp; lst.push_back(tmp); } std::sort(lst.begi..

백준 C++ | #5 BOJ1427 소트인사이드 C++ 문제 풀이

1427번: 소트인사이드 (acmicpc.net) 1427번: 소트인사이드 첫째 줄에 정렬하려고 하는 수 N이 주어진다. N은 1,000,000,000보다 작거나 같은 자연수이다. www.acmicpc.net #include #include #include bool compare(int i, int j) { return j > n; int size = 0; while (n > 0) { num.push_back(n % 10); n /= 10; size++; } std::sort(num.begin(), num.end(), compare); for (int i = 0; i < size;i++) { std::c..

백준 C++ | #4 BOJ 11399 ATM 문제 풀이

11399번: ATM (acmicpc.net) 11399번: ATM 첫째 줄에 사람의 수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 각 사람이 돈을 인출하는데 걸리는 시간 Pi가 주어진다. (1 ≤ Pi ≤ 1,000) www.acmicpc.net #include #include int main() { // 정렬해서 합하기 int size; std::cin >> size; int* money = new int[size]; for (int i = 0; i > money[i]; } std::sort(money, money + size); int sum = money[0]; for (int i = 1; i < size; i++) { money[i] = ..