본문 바로가기

728x90

Python

[백준알고리즘] 10799번: 쇠막대기 -Python, C++ [백준알고리즘] 10799번: 쇠막대기 -Python, C++ 10799번: 쇠막대기 (acmicpc.net) 10799번: 쇠막대기 여러 개의 쇠막대기를 레이저로 절단하려고 한다. 효율적인 작업을 위해서 쇠막대기를 아래에서 위로 겹쳐 놓고, 레이저를 위에서 수직으로 발사하여 쇠막대기들을 자른다. 쇠막대기와 레이저 www.acmicpc.net 잘못된 점이나 부족한 점 지적해주시면 감사하겠습니다 예전에 파이썬으로 풀었다가 쉬웠어서 안올렸던 문제다. 그런데.. 오늘 C++로 풀면서 완전 대참사였다. 계속 '틀렸습니다'가 떠서 이전에 파이썬으로 푼 코드를 봤는데 로직이 같은 개념으로 짠 것인데도 해결이 안 됐다. 이래저래 모두 안되길래 아예 파이썬으로 짰던 로직 그대로 짰는데도 안됐다. 그래서 오늘 C++로 .. 더보기
[백준알고리즘] 1018번: 체스판 다시 칠하기 -Python, C++ [백준알고리즘] 1018번: 체스판 다시 칠하기 -Python, C++ 1018번: 체스판 다시 칠하기 (acmicpc.net) 1018번: 체스판 다시 칠하기 첫째 줄에 N과 M이 주어진다. N과 M은 8보다 크거나 같고, 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 보드의 각 행의 상태가 주어진다. B는 검은색이며, W는 흰색이다. www.acmicpc.net 예전에 파이썬으로 풀었던 문제이지만 포스팅을 하지 않았었다. 예전에 풀었던 파이썬 코드는 가장 아래쪽에 넣어두었다. 주어진 입력이 들어오면 가장 수정을 적게해도 되는 8x8 크기의 체스판을 떼어내면 된다. 그러다 보니 직접 일일이 8x8 크기의 체스판을 떼어내는 모든 경우에 수정해야 하는 칸의 수를 카운팅 했다. 처음에는 각 시.. 더보기
[백준알고리즘] 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 안에는 (카드 선택 횟수, 현재까지 선.. 더보기
[백준알고리즘] 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}\)이다. .. 더보기
[백준알고리즘] 4344번: 평균은 넘겠지 -Python [백준알고리즘] 4344번: 평균은 넘겠지 -Python 4344번: 평균은 넘겠지 (acmicpc.net) 4344번: 평균은 넘겠지 대학생 새내기들의 90%는 자신이 반에서 평균은 넘는다고 생각한다. 당신은 그들에게 슬픈 진실을 알려줘야 한다. www.acmicpc.net 문제 그대로 풀었다. 값을 가져온 뒤, 평균을 구하고, 평균이 넘는 학생의 수를 구했다. 여기서 평균 이상을 구하면 안되고 평균 초과를 기준으로 구해야 한다. 각 케이스별로 학생의 수가 1000명 이하라 list로 점수를 받고, 학생 수와 점수들을 나눠도 통과는 했겠지만 deque을 사용했다. from collections import deque for _ in range(int(input())): score = deque(map(.. 더보기

728x90