본문 바로가기

728x90

분류 전체보기

[백준알고리즘] 7568번: 덩치 -C++ [백준알고리즘] 7568번: 덩치 -C++ 7568번: 덩치 (acmicpc.net) 7568번: 덩치 우리는 사람의 덩치를 키와 몸무게, 이 두 개의 값으로 표현하여 그 등수를 매겨보려고 한다. 어떤 사람의 몸무게가 x kg이고 키가 y cm라면 이 사람의 덩치는 (x, y)로 표시된다. 두 사람 A 와 B의 덩 www.acmicpc.net 예전에 파이썬으로 풀고 포스팅까지 했던 문제다... 그런데 오늘은 풀면서 엄청 헤매였다.... 아래는 그때 포스팅했던 글이다... 그때 손풀기용으로 풀었다며 당당하던 나는 어디로 갔는가.. [백준알고리즘] 7568번: 덩치 -Python (tistory.com) [백준알고리즘] 7568번: 덩치 -Python [백준알고리즘] 7568번: 덩치 -Python http.. 더보기
[백준알고리즘] 2231번: 분해합 -Python, C++ [백준알고리즘] 2231번: 분해합 -Python, C++ 2231번: 분해합 (acmicpc.net) 2231번: 분해합 어떤 자연수 N이 있을 때, 그 자연수 N의 분해합은 N과 N을 이루는 각 자리수의 합을 의미한다. 어떤 자연수 M의 분해합이 N인 경우, M을 N의 생성자라 한다. 예를 들어, 245의 분해합은 256(=245+2+4+5)이 www.acmicpc.net 처음에 입력으로 생성자가 들어오는 줄 알고 후딱 풀어버리고는 왜 틀렸지 했다 ㅋㅋ;; 입력은 생성자가 아닌 분해합이 들어오며, 가능한 생성자 중 가장 작은 값을 출력하는 문제이다. 문제 자체는 로직이 쉬웠다. 그런데 이번에 C++로 푼 로직과 달리 예전에 파이썬으로 푼 코드가 있어서 같이 가져왔다. 아래는 C++ 코드다. 전체 입력.. 더보기
[백준알고리즘] 2798번: 블랙잭 -Python, C++ [백준알고리즘] 2798번: 블랙잭 -Python, C++ 2798번: 블랙잭 (acmicpc.net) 2798번: 블랙잭 첫째 줄에 카드의 개수 N(3 ≤ N ≤ 100)과 M(10 ≤ M ≤ 300,000)이 주어진다. 둘째 줄에는 카드에 쓰여 있는 수가 주어지며, 이 값은 100,000을 넘지 않는 양의 정수이다. 합이 M을 넘지 않는 카드 3장 www.acmicpc.net 저번에도 파이썬으로 풀었던 문제인데, 파이썬은 먼저 조합을 모두 구한 뒤 적절한 답을 찾았다면, 이번에 푼 C++은 약간 다르게 풀었다. BFS와 비슷하게 풀었으며, \(Queue\)를 사용했다. \(Queue\) 안에는 tuple을 사용해서 세 개의 값을 쌍으로 단위 처리했다. tuple 안에는 (카드 선택 횟수, 현재까지 선.. 더보기
[백준알고리즘] 2447번: 별 찍기 - 10 -C++ [백준알고리즘] 2447번: 별 찍기 - 10 -C++ 2447번: 별 찍기 - 10 (acmicpc.net) 2447번: 별 찍기 - 10 재귀적인 패턴으로 별을 찍어 보자. N이 3의 거듭제곱(3, 9, 27, ...)이라고 할 때, 크기 N의 패턴은 N×N 정사각형 모양이다. 크기 3의 패턴은 가운데에 공백이 있고, 가운데를 제외한 모든 칸에 별이 www.acmicpc.net 별 찍기 문제 10번이다. 예전에 파이썬으로 푼 적이 있었다. 아래는 그때 풀었던 파이썬 풀이 링크다 [백준알고리즘] 2447번: 별 찍기 10 -Python (tistory.com) 이번에 풀 때도 마찬가지로 *로 채워진 전체 판에서 삭제할 부분을 선택했다. 그래서 로직 자체는 쉽게 재귀로 생각해서 풀렸는데.... 알 수 없.. 더보기
[백준알고리즘] 10872번: 팩토리얼 -Python, C++ [백준알고리즘] 10872번: 팩토리얼 -Python, C++ 10872번: 팩토리얼 (acmicpc.net) 10872번: 팩토리얼 0보다 크거나 같은 정수 N이 주어진다. 이때, N!을 출력하는 프로그램을 작성하시오. www.acmicpc.net 팩토리얼 문제다. 입력으로 들어올 수 있는 범위는 0 이상 12 이하이다. 하지만 \(12! = 479,001,600\) 로 int는 물론 unsigned int도 범위를 벗어나게 된다. 따라서 결과값을 저장하는 \(factorial\) 변수는 int64_t로 선언을 해주었다. 예전에 파이썬으로도 통과를 했었는데, C++은 반복문으로 푼 반면 재귀를 사용했길래 그냥 같이 올린다. #include void solve(void); int main(void) { .. 더보기
[백준알고리즘] 1002번: 터렛 -Python, C++ [백준알고리즘] 1002번: 터렛 -Python, C++ 1002번: 터렛 (acmicpc.net) 1002번: 터렛 각 테스트 케이스마다 류재명이 있을 수 있는 위치의 수를 출력한다. 만약 류재명이 있을 수 있는 위치의 개수가 무한대일 경우에는 -1을 출력한다. www.acmicpc.net 뭔가 간단히 생각했다가 생각보다 '맞나?' 하면서 생각을 좀 하게 됐다. 각각의 경우를 따져보게 되면 그래도 쉽게 풀 수 있다. 0은 하나의 원이 다른 원에 포함되거나, 서로 밖에 위치해 만나지 않는 경우 1은 하나의 원이 다른 원 안에서 포함되면서 한 점에서 만나는 내접하는 경우와, 하나의 원이 다른 원 밖에서 한 점에서 만나는 외접하는 경우 2는 원끼리 겹쳐서 두 점에서 만나는 경우 -1은 두 원이 일치하는 경우.. 더보기
[백준알고리즘] 3053번: 택시 기하학 -Python, C++ [백준알고리즘] 3053번: 택시 기하학 -Python, C++ 3053번: 택시 기하학 (acmicpc.net) 3053번: 택시 기하학 첫째 줄에는 유클리드 기하학에서 반지름이 R인 원의 넓이를, 둘째 줄에는 택시 기하학에서 반지름이 R인 원의 넓이를 출력한다. 정답과의 오차는 0.0001까지 허용한다. www.acmicpc.net 유클리드 거리(Euclidean distance)와 택시 거리(맨하탄 거리, Manhattan distance)에 대한 내용을 다루고 있다. 유클리드 거리는 어릴 때 배우는 피타고라스 정리에 의한 거리 계산 방법이다. 두 점 \((x_1, x_2)\)와 \((y_1, y_2)\) 사이의 거리는 \(\sqrt{(x_1 - y_1)^2 + (x_2 - y_2)^2}\)이다. .. 더보기
[백준알고리즘] 4153번: 직각삼각형 -C++ [백준알고리즘] 4153번: 직각삼각형 -C++ 4153번: 직각삼각형 (acmicpc.net) 4153번: 직각삼각형 입력은 여러개의 테스트케이스로 주어지며 마지막줄에는 0 0 0이 입력된다. 각 테스트케이스는 모두 30,000보다 작은 양의 정수로 주어지며, 각 입력은 변의 길이를 의미한다. www.acmicpc.net 저번과 마찬가지로 while의 조건문 안에서 cin을 통해서 입력을 받았다. std::cin은 istream 객체를 return 하지만 if와 while의 조건문 안에서는 bool을 return 하게 된다. istream이 아닌 현재 상태에 따라 좋은 입력 상태일 경우 true를 return 하며 좋지 않은 입력 상태일 경우 false를 return한다. 헤더의 sort를 사용해 입력.. 더보기

728x90