브루트포스 29

백준 1285번 동전 뒤집기

문제 링크입니다: https://www.acmicpc.net/problem/1285 1285번: 동전 뒤집기 첫째 줄에 20이하의 자연수 N이 주어진다. 둘째 줄부터 N줄에 걸쳐 N개씩 동전들의 초기 상태가 주어진다. 각 줄에는 한 행에 놓인 N개의 동전의 상태가 왼쪽부터 차례대로 주어지는데, 앞면이 위 www.acmicpc.net 얼핏 보면 시간 복잡도가 O(2^40)으로 보여 시간 안에 풀지 못할 문제처럼 보이는 문제였습니다. 하지만 다음과 같이 문제를 쪼개면 시간 내 풀 수 있는 문제입니다. (시간 복잡도: 400 * 2^20) 가능한 모든 조합에 대해 열을 직접 뒤집어 본다 (시간 복잡도: O(2^20)) 열은 이미 뒤집혔고 행을 뒤집을 차례인데 행 내 뒷면 동전 개수를 파악하면 직접 뒤집을 필요..

알고리즘/BOJ 2024.03.30

백준 19942번 다이어트

문제 링크입니다: https://www.acmicpc.net/problem/19942 19942번: 다이어트 식재료 N개 중에서 몇 개를 선택해서 이들의 영양분(단백질, 탄수화물, 지방, 비타민)이 일정 이상이 되어야 한다. 아래 표에 제시된 6가지의 식재료 중에서 몇 개를 선택해서 이들의 영양분의 각 www.acmicpc.net N이 최대 15이기 때문에 비트마스킹을 통해 완전탐색으로 풀어도 TLE가 발생하지 않는 문제였습니다. 적합한 재료 조합이 있고 같은 비용의 집합이 하나 이상이면 사전 순으로 가장 빠른 것을 출력해야 하므로 map와 같은 다소 기괴한 자료구조를 선언해야 합니다 key: 최소 비용 value: 재료 조합을 오름차순 한 set 개발환경:Visual Studio 2022 지적, 조언,..

알고리즘/BOJ 2024.03.30

백준 12869번 뮤탈리스크

문제 링크입니다: https://www.acmicpc.net/problem/12869 12869번: 뮤탈리스크 1, 3, 2 순서대로 공격을 하면, 남은 체력은 (12-9, 10-1, 4-3) = (3, 9, 1)이다. 2, 1, 3 순서대로 공격을 하면, 남은 체력은 (0, 0, 0)이다. www.acmicpc.net 주어진 N과 SCV의 최대 체력이 크지 않기 때문에 브루트포스로 풀어도 되는 문제였습니다. visited set의 키를 {scv 체력의 순열, 몇 번째 공격}으로 두는 것이 핵심이었습니다. 억지로 푼 느낌... 개발환경:Visual Studio 2022 지적, 조언, 질문 환영입니다! 댓글 남겨주세요~

알고리즘/BOJ 2024.03.18

[Programmers] 사라지는 발판

문제 링크입니다: https://programmers.co.kr/learn/courses/30/lessons/92345 코딩테스트 연습 - 사라지는 발판 [[1, 1, 1], [1, 1, 1], [1, 1, 1]] [1, 0] [1, 2] 5 [[1, 1, 1], [1, 0, 1], [1, 1, 1]] [1, 0] [1, 2] 4 programmers.co.kr 비트 마스킹을 연습하기 좋은 문제였습니다. 알고리즘은 아래와 같습니다. 1. 주어진 board 정보를 기반으로 boardBit을 생성합니다. -> ex) [[1, 1, 1], [1, 0, 1], [0, 1, 1]]이 주어졌을 경우 boardBit는 111101011을 십진수로 변환한 값 2. 재귀함수 func는 매개변수 {y, x}에 위치한 사람..

[Programmers] 숫자 블록

문제 링크입니다: https://programmers.co.kr/learn/courses/30/lessons/12923 코딩테스트 연습 - 숫자 블록 1 10 [0, 1, 1, 2, 1, 3, 1, 4, 3, 5] programmers.co.kr 해당 문제는 아래의 두 조건에 의해 브루트포스로 접근해도 되었습니다. end - begin의 값은 항상 10,000을 넘지 않습니다. 그렙시는 길이가 1e9인 도로에 1번 블록부터 시작하여 1e7 블록까지 위의 규칙으로 모두 놓았습니다. 개발환경: Programmers IDE 지적, 조언, 질문 환영합니다! 질문 남겨주세요~

[Programmers] 자물쇠와 열쇠

문제 링크입니다: https://programmers.co.kr/learn/courses/30/lessons/60059 코딩테스트 연습 - 자물쇠와 열쇠 [[0, 0, 0], [1, 0, 0], [0, 1, 1]] [[1, 1, 1], [1, 1, 0], [1, 0, 1]] true programmers.co.kr 특별한 알고리즘을 요구하지 않는 구현 문제였습니다. 해당 문제는 아래의 전개도를 연상하고 이차원 배열 90도 회전을 구현할 수 있다면 쉽게 풀 수 있었을 문제였습니다. 개발환경: Programmers IDE 지적, 조언, 질문 환영입니다! 댓글 남겨주세요~

[Programmers] [1차] 셔틀버스

문제 링크입니다: https://programmers.co.kr/learn/courses/30/lessons/17678 코딩테스트 연습 - [1차] 셔틀버스 10 60 45 ["23:59","23:59", "23:59", "23:59", "23:59", "23:59", "23:59", "23:59", "23:59", "23:59", "23:59", "23:59", "23:59", "23:59", "23:59", "23:59"] "18:00" programmers.co.kr 문제에서 주어진대로 풀면 되는 문제였습니다. 알고리즘은 아래와 같습니다. 1. 예제를 보면 timetable이 정렬되어 있지 않기 때문에 시간 오름차순으로 정렬을 진행합니다. 2. timetable의 크기가 최대 2,000이므로 브루트..

[Programmers] 양궁대회

문제 링크입니다: https://programmers.co.kr/learn/courses/30/lessons/92342 코딩테스트 연습 - 양궁대회 문제 설명 카카오배 양궁대회가 열렸습니다. 라이언은 저번 카카오배 양궁대회 우승자이고 이번 대회에도 결승전까지 올라왔습니다. 결승전 상대는 어피치입니다. 카카오배 양궁대회 운영위원 programmers.co.kr 문제에서 주어진대로 시뮬레이션을 돌리면 되는 문제였습니다. 개발환경: Programmers IDE 지적, 조언, 질문 환영입니다! 댓글 남겨주세요~

[Programmers] 숫자의 표현

문제 링크입니다: https://programmers.co.kr/learn/courses/30/lessons/12924 코딩테스트 연습 - 숫자의 표현 Finn은 요즘 수학공부에 빠져 있습니다. 수학 공부를 하던 Finn은 자연수 n을 연속한 자연수들로 표현 하는 방법이 여러개라는 사실을 알게 되었습니다. 예를들어 15는 다음과 같이 4가지로 표현 할 programmers.co.kr n이 10,000 이하의 숫자라 쉽게 풀 수 있는 문제였습니다. 개발환경: Programmers IDE 지적, 조언, 질문 환영입니다! 댓글 남겨주세요~

[Programmers] 후보키

문제 링크입니다: https://programmers.co.kr/learn/courses/30/lessons/42890 코딩테스트 연습 - 후보키 [["100","ryan","music","2"],["200","apeach","math","2"],["300","tube","computer","3"],["400","con","computer","4"],["500","muzi","music","3"],["600","apeach","music","2"]] 2 programmers.co.kr 모든 경우의 수를 시뮬레이션하는 문제였습니다. 알고리즘은 아래와 같습니다. 1. 각 칼럼들의 값들을 미리 전처리하여 분류합니다. 2. 모든 키의 조합에 대해 시뮬레이션을 진행합니다. 2.1 isCandidateKey 메서드..