https://www.acmicpc.net/problem/1799 반갑다. 오늘은 백준 1799번 비숍 문제를 풀어보며 체스의 고수가 되어보자.이 문제에서는 백트래킹을 이용해서 체스 챔피언이 될 수 있는 사고력을 기를 수 있다. 전략을 세워보자문제를 푸는 큰 틀은 N-Queen 문제와 동일하다. 각 좌표에서 이전의 사례들을 참고하여 놓을 수 있는지 없는지를 판단하면 된다. 참고 : 백준 N-Queenhttps://www.acmicpc.net/problem/9663 다만, 한 가지 다른 점은 비숍만을 이용할 수 있기 때문에 대각선에 위치해있는지 판단하면 된다.추가적으로, 비숍은 대각선, 즉, 본인의 타일과 색이 같은 타일로만 이동할 수 있기 때문에 타일 색으로 분리해서 따져본다면 최적화를 할 수 있다.똑..
https://www.acmicpc.net/problem/18809 반갑다. 오늘은 백준 18809번: Gaaaaaaaaaarden 문제를 보자. 전략을 세워보자문제에서 유추할 수 있는 요구사항은 다음과 같다.- 주어진 배양액을 뿌릴 수 있는 위치에 모두 소비할 때까지 뿌린다.- 뿌린 자리에서 매 초 인접한 땅으로 배양액이 퍼져나간다.- 동시에 두 배양액이 만난 시점의 자리에 꽃이 피어나고 두 배양액은 사라진다. 그럼 우리가 작성할 기능은 다음과 같이 추출할 수 있다.- 배양액을 뿌리는 기능- 배양액을 퍼트리는 기능- 두 배양액이 만났는지 체크하여 꽃으로 체크하는 기능자, 코드로 옮겨보자1. 입력과 전처리코드가 길어질 것 같아 입력을 받는 부분은 init() 함수로 분리했다.N, M, G, R 변수를..
https://www.biko.kr/problem/5126 무료 프로그래밍 학습 플랫폼 BIKO코딩의 기초부터 심화까지 단계별로 공부해 보세요!www.biko.kr 반갑다.오늘은 BIKO 5126번, A0 강경 젓갈 축제 0 문제를 같이 풀어보자. 입력이 없어서 당황스러웠지만 당황할 필요는 없다. 하드코딩으로 처리하면 된다.문제 분석참가자: 5명심사위원: 8명규칙:각 참가자는 8개의 점수를 받는다.최고점 2개, 최저점 2개 제거남은 4개의 평균 → 소수점 첫째 자리에서 반올림 (소수점 이하 한 자리로 출력)공동 순위는 허용하되, 다음 순위는 건너뛰지 않음시간복잡도: O(N log N) (정렬 때문, N은 심사위원 수)공간복잡도: O(1) (배열 고정)전략을 세워보자점수 처리: 각 참가자별로 8개 점수 정..
https://www.acmicpc.net/problem/2170 반갑다. 오늘은 백준 2270번, 선 긋기 문제를 같이 풀어보자.이 문제를 해결하고 나면 C++로 그리디하게 한 붓 그리기 하듯 선분을 병합하는 방법에 대해 감을 잡을 수 있을 것이다. 전략을 세워보자선분들이 막 섞여 있다. 겹치기도 하고, 따로 떨어지기도 한다.우리는 펜을 최소한으로 들어서, 선을 모두 그어야 한다.목표는 간단하다 — 총 얼마나 그었는가. 핵심은 다음과 같다:정렬한다. 시작점 기준으로.겹치면 병합한다. 떨어졌으면 그 전 구간 길이 저장.끝까지 갔다면 마지막 구간 길이 더한다.즉, "펜을 떼지 않고 한 번에 그을 수 있는 구간"의 직선 길이 합을 구하는 것이 오늘의 목표 되시겠다. 자, 코드로 옮겨보자1. 입력과 전처리선분..
반갑다. 오늘은 백준 2212번, 센서 문제를 같이 풀어보자.이 문제를 해결하고 나면 C++로 그리디하게 사고하는 감각이 조금은 더 날카로워질 거다.우유부단함? 오늘부로 그건 안녕이다. TL;DR센서가 여러 개 주어지고, 이 센서들을 커버할 수 있는 K개의 집중국을 설치해야 한다.목표는 센서 간 거리의 합을 최소화하는 것.그러니까 결국, 센서들 사이의 간격을 잘라서 K개의 그룹을 만들고, 그룹 내에서는 통신 거리를 무시하고 그룹 사이의 거리만 합산하면 된다는 이야기다. 전략을 세워보자처음 떠오르는 생각은 이렇다.센서 간 거리를 모두 구한 다음, 가장 멀리 떨어진 간격 K-1개를 잘라내면 되지 않을까?센서들을 K개의 그룹으로 나누려면 K-1번 자를 수 있고,그렇게 자르면 각 그룹 안에서는 통신이 필요 없으..
https://www.biko.kr/problem/4982 무료 프로그래밍 학습 플랫폼 BIKO코딩의 기초부터 심화까지 단계별로 공부해 보세요!www.biko.kr 반갑다. 오늘은 세 수 중 큰 수를 출력하는 문제를 풀어보겠다. 나와 함께한다면 C++로 수를 비교하는건 일도 아니게 될 것이다. 문제에서 세 수를 주었다. 무조건 3개의 수만 주어지기 때문에 다음과 같이 작성할 수 있을 것이다. #include #include int main() { int a, b, c; std::cin >> a >> b >> c; a = std::max(a, b); a = std::max(a, c); std::cout 하지만 코드가 지저분하다.좀 더 예쁜 코드를 짜고 싶다면 반복문을 익혀보자..