목록workspace/algorithm (149)
HwangHub
https://www.acmicpc.net/problem/17609 17609번: 회문 각 문자열이 회문인지, 유사 회문인지, 둘 모두 해당되지 않는지를 판단하여 회문이면 0, 유사 회문이면 1, 둘 모두 아니면 2를 순서대로 한 줄에 하나씩 출력한다. www.acmicpc.net 첫 번째 시도 1개만 제외하고 회문이 되는 경우를 유사 회문이라고 정의할 때, 그 문제가 되는 문자를 찾아서 저장해두고 투포인터로 문자열을 순회하면서 문제가 발생했을 때 사전에 저장한 문제의 문자와 비교하면 되겠다고 가정한 채 구성한 로직이었다. 결과는 실패였다. 가정은 그럴싸하였다고 생각했으나, 문제가 되는 문자를 찾는 로직에 오류가 있어서 제대로 문자를 찾아내지 못헀고, 이는 결국 실패로 이어졌다. import sys fr..

https://www.acmicpc.net/problem/1793 1793번: 타일링 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있으며, 정수 n이 주어진다. www.acmicpc.net 문제 해석 다이나믹 프로그래밍은 분할 정복의 한 종류로, 복잡한 문제를 작은 문제들로 쪼개어 풀어내는 알고리즘이다. 여기서 핵심은, 잘게 쪼개진 문제 하나하나는 한 번만 푼다는 점이다. 다이나믹 프로그래밍을 적용시키기 위해서는 다음 두 가지 조건을 만족해야 한다. 조건 1. 큰 문제를 작은 문제로 나눌 수 있다. 조건 2. 작은 문제에서 구한 정답을 큰 문제에 적용할 수 있다. 해당 문제에서는 타일을 연속적으로 배치한 길이가 0, 1, 2와 같이 계속 쌓다가 어느 순간 길이가..

https://www.acmicpc.net/problem/13423 13423번: Three Dots 직선 위에 서로 다른 N개의 점이 찍혀 있다. 점 i의 위치는 Xi이다. N개의 점 중 3개를 골라 가장 왼쪽에 있는 점을 a, 가운데 있는 점을 b, 가장 오른쪽에 있는 점을 c라고 하자. 각각의 점의 위치는 www.acmicpc.net RESULT """pypy3""" from collections import defaultdict import sys input = sys.stdin.readline for _ in range(int(input())): n = int(input()) li = sorted(list(map(int, input().split()))) ans = 0 dd = defaultdi..
보호되어 있는 글입니다.
보호되어 있는 글입니다.
보호되어 있는 글입니다.
보호되어 있는 글입니다.
https://www.acmicpc.net/problem/17608 17608번: 막대기 아래 그림처럼 높이만 다르고 (같은 높이의 막대기가 있을 수 있음) 모양이 같은 막대기를 일렬로 세운 후, 왼쪽부터 차례로 번호를 붙인다. 각 막대기의 높이는 그림에서 보인 것처럼 순서대로 www.acmicpc.net 문제 풀이 막대기를 리스트에 입력받고, 앞에서 뒤로 리스트를 탐색하면서 점점 더 높은 막대만 카운트하면 된다. 반복문으로 풀 수도 있을 것 같은데, 재귀 함수에 익숙해지고자 간단하지만 재귀 로직으로 구현해봤다. 구현 로직 첫 번째 시도 import sys input = sys.stdin.readline def go(arr, idx, cmp): global ans if idx >= len(arr): pr..
https://www.acmicpc.net/problem/12789 12789번: 도키도키 간식드리미 인하대학교 학생회에서는 중간, 기말고사 때마다 시험 공부에 지친 학우들을 위해 간식을 나눠주는 간식 드리미 행사를 실시한다. 승환이는 시험 기간이 될 때마다 간식을 받을 생각에 두근두 www.acmicpc.net 문제 풀이 학생들이 처음 서 있는 줄은 먼저 들어온 사람이 먼저 나가는 FIFO 구조이므로 queue를 이용하면 된다.(편의상 deque를 이용하여 구현하였다.) 그리고 학생들이 순서대로 입장하기 위해 잠시 머무는 줄은 LIFO 구조이므로 stack을 이용하면 된다. 이제 준비는 끝났다. 문제에서 원하는대로, queue에서 또는 stack에서 순서(order)에 맞는 사람이 res 리스트에 입장..
11880번: 개미 승현이는 방학을 맞아 심심하지만, 공부는 하기 싫습니다. 이렇게 방 안에서 하루하루 시간을 낭비하던 중, 승현이는 자신의 직육면체 모양의 지우개에 개미 한 마리가 붙어 있다는 것을 알게 www.acmicpc.net 문제 풀이 육면체를 펼쳐서 피타고라스 정리를 이용하여 대각선의 제곱을 구하는 문제이다. 경우의 수는 3가지가 가능하다. 처음에는 그냥 냅다 모든 경우를 ans1, ans2, ans3 변수를 할당하여, 이 중에서 가장 작은 값을 구하는 문제라고 생각했는데, 이 방식보다 더 효율적으로 풀어낼 수 없을까 고민하다가 순열조합을 적용해보자 생각했다. 로직상 숫자가 변수에 할당되는 순서에 따라 값이 달라지므로 순열이 적합할 것이다. 제출 코드 from itertools import p..