[99클럽 5기] 코딩테스트 스터디 14일차 TIL - 브루트포스
·
항해99
[Silver I] 오목 - 2615 [문제 링크](https://www.acmicpc.net/problem/2615)🗝️오늘의 학습 키워드 (Keyword)브루트 포스 (Brute Force)🖥️본인의 언어로 내용 정리 (Today I Learned)19x19의 오목판에서 검은 오목알은 1, 흰 오목알은 2, 빈칸은 0으로 표시되며, 검은 알 또는 흰 알이 5개 연속으로 붙어 있으면 승리이다. 연속으로 라는 말은, 좌우대각선 방향으로 이어져 있음을 말한다. 오목판의 상태가 주어지면 검은 알 과 흰 알 중 승리 알 색상을 출력하고, 5개 연속으로 붙어있는 오목알 중 가장 왼쪽에 있는 오목알의 좌표를 출력하는 프로그램을 작성하는 문제이다. 처음 문제를 접하였을땐 BFS나 DFS를 활용하는 문제일 줄 알..
[99클럽 5기] 코딩테스트 스터디 13일차 TIL - 백트래킹
·
항해99
[Silver I] 부등호 - 2529 [문제 링크](https://www.acmicpc.net/problem/2529) 🗝️오늘의 학습 키워드 (Keyword)완전 탐색백트래킹💻본인의 언어로 내용 정리 (Today I Learned)K개의 부등호가 입력으로 주어졌을 때, 부등호의 순서를 만족하는 (K+1)자리의 정수 중에서 최댓값과 최솟값을 구하는 문제이다. 먼저 부등호 처리에 대해 알아보자.[''] 과 같이 입력이 주어졌을 때, 비교 대상을 생각해보자.예를 들어 1 2 를 비교한다고 가정하였을 때, 1과 2를 비교한다. 마찬가지로 참이면 132라는 수는 조건을 만족하는 수이므로 따로 저장한다. 💡알고리즘 풀이# 부등호 판별def check(a, b, op): if (op == " b):..
[99클럽 5기] 코딩테스트 스터디 12일차 TIL - 완전 탐색
·
항해99
[Silver III] 숫자 정사각형 - 1051 [문제 링크](https://www.acmicpc.net/problem/1051)🗝️오늘의 학습 키워드 (Keyword)완전 탐색 (Exhaustive Search)브루트포스 (Brute Force Search)💻본인의 언어로 내용 정리 (Today I Learned)NxM 크기의 직사각형 내에서 꼭짓점이 모두 같은 수인 정사각형의 넓이를 구하는 문제이다. 이 문제의 핵심은 다음과 같다. NxM에서 최대 크기의 정사각형을 만족하려면 그림과 같이 NxN (또는 M이 N보다 작을 경우 MxM)이 된다.이 점을 생각하며 문제를 접근해보자 💡알고리즘 풀이N, M = map(int ,input().split())# 매트릭스 생성mat = [[] for _ i..
[99클럽 5기] 코딩테스트 스터디 3주차 보너스 문제
·
항해99
[Silver I] 효율적인 해킹 - 1325 [문제 링크](https://www.acmicpc.net/problem/1325)🗝️오늘의 학습 키워드 (Keyword)그래프 탐색너비 우선 탐색💻본인의 언어로 내용 정리 (Today I Learned)그래프 탐색 문제이다. 기존의 문제와는 조금 다른 점이라면 양방향 그래프가 아닌 단방향 그래프인 점이다. A가 B를 신뢰하는 경우, B를 해킹하면 A도 해킹 할 수 있다. 그리고 문제의 입력에는 A가 B를 신뢰한다는 의미로 해석된다. 즉, 입력받은 B를 해킹하면, A도 해킹할 수 있다는 뜻이 된다. 이 점에 유의하여 문제에 접근해야 한다. 💡알고리즘 풀이N, M = map(int, input().split())graph = [[] for _ in rang..
[99클럽 5기] 코딩테스트 스터디 11일차 TIL - 완전 탐색
·
항해99
[Silver IV] 체스판 다시 칠하기 - 1018 [문제 링크](https://www.acmicpc.net/problem/1018) 🗝️오늘의 학습 키워드 (Keyword)완전 탐색 (Exhaustive Search)브루트포스 (Brute Force Search)💻본인의 언어로 내용 정리 (Today I Learned)3주차 첫번째 문제. 완전 탐색 알고리즘을 활용한 문제이다. 입력받은 N개의 줄의 보드의 형태 중, 8x8 크기의 체스판을 만들기 위해서 다시 칠해야 하는 칸의 최소 개수를 구하는 문제이다. 처음에는 단순히 (0, 0)부터 끝까지 돌면서 틀린것 개수를 카운트해서 젤 작은 값을 출력하면 되는거 아닌가? 하는 생각이 들었는데이럴수가 이렇게 푸는 것이 맞았다. 조금 함정이 있다면 N과 M..
[99클럽 5기] 코딩테스트 스터디 10일차 TIL - 그래프 탐색
·
항해99
[Gold IV] 빙산 - 2573 [문제 링크](https://www.acmicpc.net/problem/2573)🗝️오늘의 학습 키워드 (Keyword)그래프 탐색너비 우선 탐색(BFS)💻본인의 언어로 내용 정리 (Today I Learned)N x M의 크기의 2차원에서 빙산의 높이가 숫자로 주어지고, 빙산은 1년이 지날 때 마다 1씩 줄어든다. 빙산의 뭉치가 두 개로 나누어질 때의 시간을 구하는 문제이다. 문제를 처음 읽었을 때, 정말 복잡하다 생각을 하였다. BFS를 이용하여 인접 노드가 0인지를 판별하고, 빙산의 높이를 줄여가며 BFS탐색이 끝나면 빙산의 개수를 1 증가 시키는... 정말 머리가 아프다. 하지만 알고리즘이란게 차근차근 쌓아가다 보면 결국엔 답이 보이더라. 이 문제에서 핵심은..