알고리즘
-
프로그래머스 ) 두 큐 합 같게 만들기 (lv.2)알고리즘/프로그래머스 2022. 8. 30. 19:40
https://school.programmers.co.kr/learn/courses/30/lessons/118667 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 두개의 큐를 놓고 popleft()와 append()를 반복하면서 두 큐의 합을 동일하게 만드는 문제였다. 여기서 과연 for 문을 몇번 돌 것인가가 질문이었으며 처음에는 두 큐의 길이의 최댓값인 6000000번을 돌도록 설정하였으나 이후 다음의 게시글을 참고하여 최대 이동 횟수 (len(queue1)-1)x3 + 마지막 이동 후 검사 1 을 이용하도록 수정할 수 있었다. https://scho..
-
프로그래머스) 퍼즐 조각 채우기 (lv.3)알고리즘/프로그래머스 2022. 8. 21. 14:32
https://school.programmers.co.kr/learn/courses/30/lessons/84021?language=python3 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 탐색을 통해서 도형의 모양을 찾고 보드에 넣을 수 있는 도형의 크기의 합을 구하는 문제이다. 먼저, 보드를 돌면서 맞춰야 하는 퍼즐의 모양을 dfs를 통해 탐색하였다. 여기서 position은 가장 기준의 되는 부분을 (0, 0)으로 잡고 상하좌우 네 방향으로 돌면서 기준점에서 이동하는 방향을 통해 block을 구한다. 보드 안에있는 모든 구멍을 다 구해서 block..
-
프로그래머스) 아이템 줍기 (lv.3)알고리즘/프로그래머스 2022. 8. 21. 13:41
https://school.programmers.co.kr/learn/courses/30/lessons/87694?language=python3 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 탐색을 이용하여 최단 경로를 찾는 DFS/BFS의 문제 유형이다. 겹치도록 제작된 사각형들의 바깥 테두리따라 시작 지점부터 최종지점까지 최단 경로를 구하는 문제이다. 여기서 주의할 점은 칸이 아닌 테두리를 이용하여 경로를 이용하는 것으로 1개 간격으로 테두리 모양을 이룰 경우 이를 같은 칸으로 인식할 수 있기 때문에 보드의 크기와 모든 수를 2배로 하여 경로를 구한 ..
-
백준21610) 마법사 상어와 비바라기 (lv.골드5)알고리즘/백준 2022. 8. 19. 17:41
https://www.acmicpc.net/problem/21610 21610번: 마법사 상어와 비바라기 마법사 상어는 파이어볼, 토네이도, 파이어스톰, 물복사버그 마법을 할 수 있다. 오늘 새로 배운 마법은 비바라기이다. 비바라기를 시전하면 하늘에 비구름을 만들 수 있다. 오늘은 비바라기 www.acmicpc.net 시뮬레이션 및 구현 유형의 문제이다. 문제의 단계는 다음과 같다. 이동방향은 (0, -1), (-1, -1), (-1, 0), (-1, 1), (0, 1), (1, 1), (1, 0), (1, -1)이다. n*n 만큼의 board와 , m 번의 이동방향 및 이동 카운트가 주어진다. 처음 구름의 위치는 (n-2, 0), (n-2, 1), (n-1, 0), (n-1, 1)이다. 구름이 주어진 ..
-
프로그래머스) 전력망을 둘로 나누기(lv.2)알고리즘/프로그래머스 2022. 8. 17. 12:12
https://school.programmers.co.kr/learn/courses/30/lessons/86971?language=python3 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 완전탐색의 문제 유형으로 그룹을 나누고 각 그룹의 갯수 차를 구하는 문제이다. union_find를 이용하여, 부모를 찾고 부모가 같은 그룹의 갯수차를 구하는 방법으로 진행했다. from collections import defaultdict import math def solution(n, wires): answer = math.inf def find_answer..
-
백준 14891) 톱니바퀴 (골드.5)알고리즘 2022. 8. 2. 19:11
https://www.acmicpc.net/problem/14891 14891번: 톱니바퀴 총 8개의 톱니를 가지고 있는 톱니바퀴 4개가 아래 그림과 같이 일렬로 놓여져 있다. 또, 톱니는 N극 또는 S극 중 하나를 나타내고 있다. 톱니바퀴에는 번호가 매겨져 있는데, 가장 왼쪽 톱니바퀴 www.acmicpc.net 시뮬레이션 유형의 문제이다. 문제의 조건은 다음과 같다. 1) 1은 시계방향 -1은 반시계방향을 말한다. 2) 주어진 시계의 회전을 실시할 때에는 양옆의 시계와 맞닿은 부분을 확인하여 만약 서로 다른 극을 가지고 있으면 회전, 아니면 회전하지 않는다. 3) 서로 같은 극을 가진 시계를 만날 때까지 회전은 퍼져나간다. 4) 최종 시계의 모양에서 12시 방향의 극이 N극일 때 각각 1, 2, 4,..
-
백준 14503) 로봇청소기 (골드.5)알고리즘 2022. 8. 2. 19:03
https://www.acmicpc.net/problem/14503 14503번: 로봇 청소기 로봇 청소기가 주어졌을 때, 청소하는 영역의 개수를 구하는 프로그램을 작성하시오. 로봇 청소기가 있는 장소는 N×M 크기의 직사각형으로 나타낼 수 있으며, 1×1크기의 정사각형 칸으로 나누어 www.acmicpc.net 시뮬레이션 유형의 문제이다. 문제의 조건은 다음과 같다. 1) 청소기가 바라보는 방향은 북동남서의 순서로 나타낸다. 2) 청소기가 바라보는 방향에 청소할 곳이 없거나 벽이면 왼쪽으로 회전한다. 3) 바라보는 방향에 청소할 곳이 있으면 이동하여 청소하고 해당 방향에서 반복한다. 4) 청소할 곳이 없으면 바라보는 방향을 유지하고 한칸 후진하여 해당 위치에서 반복한다. 5) 청소할 곳이 없고 후진하..
-
백준 16234) 인구이동 (골드.5)알고리즘 2022. 8. 2. 18:55
https://www.acmicpc.net/problem/16234 16234번: 인구 이동 N×N크기의 땅이 있고, 땅은 1×1개의 칸으로 나누어져 있다. 각각의 땅에는 나라가 하나씩 존재하며, r행 c열에 있는 나라에는 A[r][c]명이 살고 있다. 인접한 나라 사이에는 국경선이 존재한다. 모 www.acmicpc.net 문제의 유형은 그래프 탐색을 이용하여 연결된 부분을 탐색하는 우선탐색의 문제이다. 문제의 조건은 다음과 같다. 1) 상하좌우로 인접한 두 나라의 인구차가 L보다 크거나 같고 R보다 작거나 같으면 국경선이 열린다. 2) 조건에 해당하여 국경선이 열린 모든 나라를 연합이라고 한다. 3) 국경선이 열리면 인구이동에 의해 연합 각국의 인구수는 연합국의 인구수 총합 // 연합국의 수 가 된다..