목록Algorithm/Baekjoon (17)
꿈꾸는 개발자의 블로그
문제 링크 https://www.acmicpc.net/problem/22942 22942번: 데이터 체커 데이터가 조건에 맞는다면 YES, 조건에 만족하지 않는다면 NO를 출력한다. www.acmicpc.net 문제 풀이 처음에는 원을 모두 입력받아서 정직하게 외부에 있는지, 내부에 있는지 반지름끼리 더하고 빼고 중심사이의 거리를 비교해서 풀이했는데, 시간 초과가 떴다. 그래서 다른 블로그의 아이디어를 참고해서 풀었는데, 그래도.. 시간 초과가... 어쨌든 마지막에 import stdin 이 부분만 추가해주니 해결되었다! 그냥 input()으로 받아선 안되나보다.. 원을 입력 받을 때, 리스트에 x축 위에 있는 양 끝점 정보를 넣어준다. (x-r, x, 0) = (중심에서 반지름을 뺀 왼쪽 점, 중심, ..
문제 링크 https://www.acmicpc.net/problem/2493 2493번: 탑 첫째 줄에 탑의 수를 나타내는 정수 N이 주어진다. N은 1 이상 500,000 이하이다. 둘째 줄에는 N개의 탑들의 높이가 직선상에 놓인 순서대로 하나의 빈칸을 사이에 두고 주어진다. 탑들의 높이는 1 www.acmicpc.net 문제 풀이 탑의 제일 오른쪽부터 순회하기 위해 stack에 제일 오른쪽 탑의 높이와 인덱스를 추가한다. 순회하면서 현재 탑의 높이보다 왼쪽 탑이 낮다면, stack에 현재 탑도 추가해준다. 그리고 다음 왼쪽 탑과 비교하기 위해 반복문을 나온다. 그렇지 않다면, stack에서 꺼낸 탑의 번호에 마주친 왼쪽 탑의 번호를 result에 추가한다. stack에 있는 요소 모두 왼쪽 탑과 비교..
문제 링크 https://www.acmicpc.net/problem/2800 2800번: 괄호 제거 첫째 줄에 음이 아닌 정수로 이루어진 수식이 주어진다. 이 수식은 괄호가 올바르게 쳐져있다. 숫자, '+', '*', '-', '/', '(', ')'로만 이루어져 있다. 수식의 길이는 최대 200이고, 괄호 쌍은 적어도 1개 www.acmicpc.net 문제 풀이 ()의 쌍을 찾는다. (ex. "(0/(0))"의 경우 [(3, 5), (0, 6)]) 조합으로 모든 경우의 수를 찾는다. 경우의 수에 따라 for 문을 돌면서 해당 자리를 비우고, result에 추가한다. 정렬하여 출력한다. 전체 코드 from itertools import combinations expression = input().stri..
풀고나니까 쉬운데.. 처음에 어떻게 풀어야 하는지 아이디어가 생기지 않아서 너무 어려웠다. 앞으로 많은 문제를 풀어서 여러 가지 접근 방법에 대한 아이디어를 얻어야겠다고 생각했다 ㅠㅠ 문제 링크 https://www.acmicpc.net/problem/10799 10799번: 쇠막대기 여러 개의 쇠막대기를 레이저로 절단하려고 한다. 효율적인 작업을 위해서 쇠막대기를 아래에서 위로 겹쳐 놓고, 레이저를 위에서 수직으로 발사하여 쇠막대기들을 자른다. 쇠막대기와 레이저 www.acmicpc.net 문제 풀이 "(" 라면, 스택에 추가한다. ")" 인데 앞선 인덱스의 값이 "(" 였다면, 레이저이므로 그동안 스택에 쌓인 개수만큼 result에 더한다. 그 외의 경우는 ")" 다음에 ")"이 온 경우일 것이고, ..
처음엔 문제 이해가 너무 되지 않아서.. 어려웠고, 이후엔 시간 초과가 계속 떴다 ㅠ 수정하다보니 불필요한 계산이 있었다는 것을 알게 되어서 수정하니 통과되었다! 문제 링크 https://www.acmicpc.net/problem/1874 1874번: 스택 수열 1부터 n까지에 수에 대해 차례로 [push, push, push, push, pop, pop, push, push, pop, push, push, pop, pop, pop, pop, pop] 연산을 수행하면 수열 [4, 3, 6, 8, 7, 5, 2, 1]을 얻을 수 있다. www.acmicpc.net 문제 풀이 m = [ 4, 3, 6, 8, 7, 5, 2, 1 ] 을 순회하면서 그 숫자(ex. 4) 만큼 l.append() 해준 뒤, cou..