본문 바로가기
반응형

IMPLEMENTATION11

[C/C++] 백준 #2621 카드게임(구현) 카드게임 문제는 단순하게 구현만 하면 되지만, 단순하다는 것이 그냥 단순하지는 않습니다.카드의 개수가 정해져 있기 때문에 구현만 제대로 한다면, 시간이나 메모리 등에 구애받지는 않습니다.  문제에 맞추어서 조건문만 잘 나열해서 푸는 문제입니다.https://www.acmicpc.net/problem/2621 같은 색인지 판별하기 위해서 전처리를 해서 판단을 하도록 하열고, 정렬을 함으로써 연속된 숫자 등을 판단하기 편하게 하였습니다.if - else if 문을 이용해서 줄줄히 조건을 나열한 것 이외에는 크게 다른 작업을 할 일은 별로 없습니다.  포커의 룰을 프로그램에 적용할 때에도 유용하죠. //------------------------------------------------// baekjo.. 2024. 4. 30.
[C/C++] 백준 #2608 로마 숫자(구현) 로마숫자 표기법은 아라비아 숫자 대신 제일 많이 사용되는 숫자 표현법이죠.  그래서 대략 100 미만의 숫자들은 표기할 줄 알지만, 그 이상 숫자들은 잘 모릅니다.    아라비아 숫자들은 숫자들의 위치에 따라서 숫자의 단위가 크게 달라지지만, 로마 숫자는 영문자에 따라서 단위가 정해져 있습니다.  하지만 여기에 빼기 개념도 있어서 IV = 5 - 1 = 4 와 같이 단위 문자의 위치에 따라서 빼기가 성립합니다.  IIII 라고 표현하면, 문자길이가 4이지만 IV라고 표현하면 문자길이가 2이기 때문에 두번째 방식을 택합니다.  IIV 와 같은 개념은 존재하지 않기 때문에 로마 숫자를 십진법으로 변환하기 위해서는 하나 앞이라는 개념만 이해하면 됩니다.  VX와 같이 5단위 문자인 V가 10단위 문자인 X 앞.. 2024. 4. 26.
[C/C++] 백준 #2607 비슷한 단어(구현) 이번 문제는 문제의 뜻을 잘 이해할 필요가 있습니다. 같은 구성이라는 것은 문자의 종류와 그 개수가 동일한 경우를 말합니다. GOD와 DOG는 문자의 종류와 그 개수가 동일하기 때문에 같은 구성이 됩니다. 그런데 비슷한 단어는 문자를 하나 추가하거나 뺌으로써 같은 구성이 되는 단어를 뜻합니다. 순서와는 상관없다는 것이죠. DOG와 GOOD는 비슷한 단어가 됩니다. 이것만 잘 이해하시면 문제를 푸는데 있어서 어려움은 없습니다. 난이도는 현재 실버 2등급 문제이지만, 문제만 잘 이해하셨다면 구현 난이도는 더 낮습니다. https://www.acmicpc.net/problem/2607 2607번: 비슷한 단어 첫째 줄에는 단어의 개수가 주어지고 둘째 줄부터는 한 줄에 하나씩 단어가 주어진다. 모든 단어는 영문.. 2024. 4. 19.
[C/C++] 백준 #2578 빙고(구현) 이번 문제는 알고리즘적으로 특별한 것이 없고, 스도쿠, 노노그램 등에서 사용할만한 기법을 소개하도록 하겠습니다. 문제의 링크는 다음과 같습니다. https://www.acmicpc.net/problem/2578 2578번: 빙고 첫째 줄부터 다섯째 줄까지 빙고판에 쓰여진 수가 가장 위 가로줄부터 차례대로 한 줄에 다섯 개씩 빈 칸을 사이에 두고 주어진다. 여섯째 줄부터 열째 줄까지 사회자가 부르는 수가 차례대로 www.acmicpc.net 이러한 문제를 풀 때에는 플래그를 사용하면 편합니다. 플래그를 이용해서 현재의 상황을 요약을 하는 기술입니다. 빙고의 각 줄과 각 열, 두개의 대각선을 각각 하나의 플래그로 놓고서, 몇개가 맞는지 계속 기록하는 방식입니다. (r, c) 위치가 맞았다고 한다면, rowC.. 2023. 8. 18.
[C/C++] 백준 #2567 색종이-2(구현) 이번 문제는 색종이를 붙였을 때, 차지하는 둘레를 구하는 것으로 구현을 하면 됩니다. https://www.acmicpc.net/problem/2567 2567번: 색종이 - 2 가로, 세로의 크기가 각각 100인 정사각형 모양의 흰색 도화지가 있다. 이 도화지 위에 가로, 세로의 크기가 각각 10인 정사각형 모양의 검은색 색종이를 색종이의 변과 도화지의 변이 평행하도록 www.acmicpc.net 색종이를 아무 방향이나 붙인다면 아주 어려운 문제가 되겠지만, 축에 평행하게만 붙이고 눈금에 맞추어 붙이기 때문에 색칠하기 문제로 전환해서 풀 수 있습니다. 색종이를 붙일 판을 배열로 설정하고, 색종이를 붙이면 그 영역만큼 색칠하면 됩니다. 물론 트리형태로 만들면 더 빠른 속도로 색칠할 수 있겠지만, 여기서는.. 2023. 7. 23.
[C/C++] 백준 #2564 경비원(구현) 이번 문제는 기하학적인 이해만 있어도 구현하기가 편합니다. https://www.acmicpc.net/problem/2564 2564번: 경비원 첫째 줄에 블록의 가로의 길이와 세로의 길이가 차례로 주어진다. 둘째 줄에 상점의 개수가 주어진다. 블록의 가로의 길이와 세로의 길이, 상점의 개수는 모두 100이하의 자연수이다. 이어 한 줄 www.acmicpc.net 모든 좌표를 기준점에서 시계방향으로 돌 때의 거리로 계산을 하면, 두 지점 사이의 거리를 계산하기 편합니다. A->B 로 가는 거리와 B->A로 가는 거리 중에 짧은 것을 선택하면 되겠죠. 제 경우에는 시계방향으로 돌 때, 왼쪽 아래를 기준점으로 하여서 계산을 했습니다. 이러면 수직선상에 한 점으로 표시될 수 있는데요. 실제 시작지점과 끝지점은.. 2023. 7. 18.
728x90