알고리즘 1455

백준 17071번 숨바꼭질 5

문제 링크입니다: https://www.acmicpc.net/problem/17071 17071번: 숨바꼭질 5 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 500,000)에 있고, 동생은 점 K(0 ≤ K ≤ 500,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 때 www.acmicpc.net 동생의 위치가 계속 움직이기 때문에 기존 숨바꼭질 문제들의 심화 버전이었습니다. 알고리즘은 아래와 같습니다. 1. 주어진 N이 너무 크기 때문에 `visited[수빈이의 위치][경과한 초]`와 같이 이차원 배열을 선언하지 못합니다. 1.1 이 문제의 핵심은 수빈이가 [+1, -1] 혹은 [-1, +1]과 같이 이초에 걸쳐 동일한 위치로 이동할..

알고리즘/BOJ 2024.03.20

백준 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

백준 17298번 오큰수

문제 링크입니다: https://www.acmicpc.net/problem/17298 17298번: 오큰수 첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에 수열 A의 원소 A1, A2, ..., AN (1 ≤ Ai ≤ 1,000,000)이 주어진다. www.acmicpc.net N의 최대 범위가 백만이기 때문에 O(N^2)으로는 풀 수 없는 문제였습니다. 알고리즘은 아래와 같습니다. 1. 원소 Ai에 대해 오큰수 페어를 지정해 주는 문제이므로 자료구조 스택을 이용했습니다. 2. 수열을 순회하며 다음과 같은 작업을 진행합니다. 2.1 스택이 비어있지 않을 경우 현재 원소와 스택의 top()과 비교합니다. 2.1.1 스택의 top()보다 현재 원소가 클 경우 스택의 ..

알고리즘/BOJ 2024.03.15

백준 2870번 수학숙제

문제 링크입니다: https://www.acmicpc.net/problem/2870 2870번: 수학숙제 종이에서 찾은 숫자의 개수를 M이라고 하면, 출력은 M줄로 이루어져야 한다. 각 줄에는 종이에서 찾은 숫자를 하나씩 출력해야 한다. 이때, 비내림차순으로 출력해야 한다. 비내림차순은 내림차 www.acmicpc.net 간단한 문자열 처리 문제였습니다. 주의할 점은 숫자가 최대 100자리 즉, long long 자료형으로도 커버 안 되는 숫자가 주어질 수 있기 때문에 문자열을 통해 숫자 비교하는 정렬 메서드를 직접 구현해야 합니다. 개발환경:Visual Studio 2022 지적, 조언, 질문 환영입니다! 댓글 남겨주세요~

알고리즘/BOJ 2024.03.13

백준 2910번 빈도 정렬

문제 링크입니다: https://www.acmicpc.net/problem/2910 2910번: 빈도 정렬 첫째 줄에 메시지의 길이 N과 C가 주어진다. (1 ≤ N ≤ 1,000, 1 ≤ C ≤ 1,000,000,000) 둘째 줄에 메시지 수열이 주어진다. www.acmicpc.net map의 특성을 이용하여 visited 배열과 같이 사용하면 메모리 초과가 발생하지 않고 쉽게 풀 수 있는 문제였습니다. 개발환경:Visual Studio 2022 지적, 조언, 질문 환영입니다! 댓글 남겨주세요~

알고리즘/BOJ 2024.03.13

백준 4659번 비밀번호 발음하기

문제 링크입니다: https://www.acmicpc.net/problem/4659 4659번: 비밀번호 발음하기 좋은 패스워드를 만드는것은 어려운 일이다. 대부분의 사용자들은 buddy처럼 발음하기 좋고 기억하기 쉬운 패스워드를 원하나, 이런 패스워드들은 보안의 문제가 발생한다. 어떤 사이트들은 xvtp www.acmicpc.net 문제에서 주어진 조건대로 구현하면 되는 간단한 문제였습니다. 개발환경:Visual Studio 2022 지적, 조언, 질문 환영입니다! 댓글 남겨주세요~

알고리즘/BOJ 2024.03.13

[Programmers] 양과 늑대

문제 링크입니다: https://school.programmers.co.kr/learn/courses/30/lessons/92343 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 비트마스킹과 백트래킹을 통해 풀 수 있는 문제였습니다. 사실 모든 가능한 상태에 대해 시뮬레이션을 진행하고 이 중 양 개수가 가장 높은 케이스를 찾는 방법이라 별도로 설명할 알고리즘은 없고 비트마스킹을 어떻게 활용할지 간단하게 설명하겠습니다. 노드 개수가 최대치인 17개라고 가정했을 때 처음 상태는 루트 노드만 방문한 상태인 00,000,000,000,000,001 루트 노드와 ..

[Programmers] 산 모양 타일링

문제 링크입니다: https://school.programmers.co.kr/learn/courses/30/lessons/258705 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 카카오 테크 홈페이지 해설집을 참고하여 푼 문제였습니다 아래 방향을 향하는 삼각형을 기준을 삼아 점화식을 세우는 DP 문제였습니다. 알고리즘은 아래와 같습니다. 1. 아래 방향을 향하는 삼각형을 채우는 방법은 아래와 같이 네 가지입니다. 위아래 모두 채우는 마름모 (1번) 일반적인 정삼각형 (2번) 자신과 왼쪽 삼각형을 채우는 마름모 (3번) 자신과 오른쪽 삼각형을 채우는 마름..

[Programmers] 표 병합

문제 링크입니다: https://school.programmers.co.kr/learn/courses/30/lessons/150366 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 유니온 파인드를 이용하는 문제였으며 지문에서 주어진 대로 구현하면 되는 문제였습니다. 알고리즘은 아래와 같습니다. 1. 우선 board 이차원 배열을 모두 "EMPTY"로 초기화하고 coord2coord key-value를 모두 각 좌표로 초기화합니다. 1.1 여기서 coord2coord가 유니온 파인드에 사용되는 map이며 key는 좌표 value는 집합의 루트 좌표입니다. ..

[Programmers] PCCE 기출문제 모음

1. [PCCE 기출문제] 1번 / 출력 문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/250133 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 2. [PCCE 기출문제] 2번 / 피타고라스의 정리 문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/250132 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세..