순열 14

백준 13144번 List of Unique Numbers

문제 링크입니다: https://www.acmicpc.net/problem/13144 13144번: List of Unique Numbers 길이가 N인 수열이 주어질 때, 수열에서 연속한 1개 이상의 수를 뽑았을 때 같은 수가 여러 번 등장하지 않는 경우의 수를 구하는 프로그램을 작성하여라. www.acmicpc.net 투포인터를 이용해 풀었으며 경우의 수가 int 범위를 넘어갈 수 있는 문제였습니다. 알고리즘은 아래와 같습니다. 1. 포인터 두 개를 모두 0으로 초기화한 후 구간 내 중복된 숫자가 나올 때까지 right를 증가시켜 구간을 넓힙니다. 2. 구간 내 중복된 숫자가 나올 경우 left를 하나 증가시켜 구간 내 중복된 숫자를 제거하고 중복된 숫자가 포함되었던 순열의 경우의 수를 결과에 더해줍..

알고리즘/BOJ 2024.04.08

[Programmers] 외벽 점검

문제 링크입니다: https://school.programmers.co.kr/learn/courses/30/lessons/60062 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr weak와 dist 크기가 별로 크지 않기 때문에 단순 구현으로 풀 수 있는 문제였습니다. 알고리즘은 아래와 같습니다. 1. 외벽이 원형이므로 weak 벡터 크기를 두 배로 늘려 (각각의 약점 + n) 값들을 추가해줍니다. 1.1 기존 weak 벡터 사이즈를 weakSize라고 정의하겠습니다. 2. answer를 최댓값으로 설정합니다. (INT_MAX) 3. 취약지점을 모두 점검..

[Programmers] 줄 서는 방법

문제 링크입니다: https://programmers.co.kr/learn/courses/30/lessons/12936# 코딩테스트 연습 - 줄 서는 방법 n명의 사람이 일렬로 줄을 서고 있습니다. n명의 사람들에게는 각각 1번부터 n번까지 번호가 매겨져 있습니다. n명이 사람을 줄을 서는 방법은 여러가지 방법이 있습니다. 예를 들어서 3명의 사람 programmers.co.kr n의 최댓값이 10이었다면 next_permutation을 이용하여 쉽게 풀 수 있는 문제였을 것입니다. 하지만, n의 최대값이 20이고 20! 은 상당히 큰 숫자이기 때문에 브루트 포스로 접근하면 시간 초과가 발생하는 문제였습니다. 따라서, 팩토리얼을 이용하여 수학적으로 접근해야합니다. 알고리즘을 작성하면 아래와 같습니다. 1..

[Programmers 위클리 챌린지 12주차] 피로도

문제 링크입니다: https://programmers.co.kr/learn/courses/30/lessons/87946 코딩테스트 연습 - 12주차 XX게임에는 피로도 시스템(0 이상의 정수로 표현합니다)이 있으며, 일정 피로도를 사용해서 던전을 탐험할 수 있습니다. 이때, 각 던전마다 탐험을 시작하기 위해 필요한 "최소 필요 피로도"와 던 programmers.co.kr 던전의 개수는 최대 8개이므로 8! 경우의 수를 모두 돌아봐도 시간 내 해결할 수 있는 문제였습니다. 개발환경:Visual Studio 2017 지적, 조언, 질문 환영입니다! 댓글 남겨주세요~

백준 5568번 카드 놓기

문제 링크입니다: https://www.acmicpc.net/problem/5568 5568번: 카드 놓기 문제 상근이는 카드 n(4 ≤ n ≤ 10)장을 바닥에 나란히 놓고 놀고있다. 각 카드에는 1이상 99이하의 정수가 적혀져 있다. 상근이는 이 카드 중에서 k(2 ≤ k ≤ 4)장을 선택하고, 가로로 나란히 정수를 만들기로 했다. 상근이가 만들 수 있는 정수는 모두 몇 가지일까? 예를 들어, 카드가 5장 있고, 카드에 쓰여 있는 수가 1, 2, 3, 13, 21라고 하자. 여기서 3장을 선택해서 정수를 만들려고 한다. 2, 1, 13을 순서대로 나열하면 www.acmicpc.net map을 통해 이미 등장한 숫자인지를 판별해줬고, next_permutation을 사용하여 모든 숫자의 조합을 판별했습..

알고리즘/BOJ 2020.04.21

백준 3671번 산업 스파이의 편지

문제 링크입니다: https://www.acmicpc.net/problem/3671 3671번: 산업 스파이의 편지 문제 안녕하세요. 저는 산업 스파이입니다. 저의 정체를 절대 다른 사람에게 말하지 말아주세요. 저의 가장 최근 일은 유명한 수학 연구소의 최신 연구 결과를 훔쳐오는 것이었습니다. 저는 매우 유능한 산업 스파이이기 때문에, 연구 결과를 어렵지 않게 얻을 수 있었습니다. 하지만, 제가 올 것을 미리 알았는지 연구소에서는 연구 결과를 모두 서류 절단기에 넣어버렸습니다. 어쩔수 없이 저는 눈물을 머금고 종이 조각을 모두 훔쳐왔습니다. 저를 고용한 사람은 매우 무 www.acmicpc.net 에라토스테네스의 체와 next_permutation을 이용하여 풀면 되는 문제였습니다. 코드 내용이 간단하기..

알고리즘/BOJ 2019.11.24

백준 17135번 캐슬 디펜스

문제 링크입니다: https://www.acmicpc.net/problem/17135 17135번: 캐슬 디펜스 첫째 줄에 격자판 행의 수 N, 열의 수 M, 궁수의 공격 거리 제한 D가 주어진다. 둘째 줄부터 N개의 줄에는 격자판의 상태가 주어진다. 0은 빈 칸, 1은 적이 있는 칸이다. www.acmicpc.net next_permutation을 이용한 시뮬레이션 문제였습니다. 이런 유형은 삼성 A형에 자주 출제되는 유형이므로 익혀두는 것이 좋을 것 같습니다. 흐름에 따라 코드를 작성하면 되므로 별도의 설명은 주석으로 대체하겠습니다.

알고리즘/BOJ 2019.08.06

백준 10971번 외판원 순회 2

문제 링크입니다: https://www.acmicpc.net/problem/10971 Algospot TSP1(http://jaimemin.tistory.com/304)과 유형이 같은 브루트 포스(Brute Force) 문제였습니다. 알고리즘은 아래와 같습니다.1. 외파원은 0번째 도시에서부터 시작한다고 가정하고 나머지 도시들의 모든 순서를 next_permutation을 이용하여 조합해봅니다.2. 모든 도시를 방문했다면 방문하는데 걸었던 거리를 현재 result와 비교해서 업데이트해줍니다.-> 다시 0번째 도시까지 돌아오는 거리도 더해줘야합니다!!3. result를 출력해줍니다. #include #include #include #include using namespace std; const int MA..

알고리즘/BOJ 2019.01.19