[BOJ][P5] 6549 히스토그램에서 가장 큰 직사각형
·
알고리즘 문제풀이
문제 내용입력은 테스트 케이스 여러 개로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있고, 직사각형의 수 n이 가장 처음으로 주어진다. (1 ≤ n ≤ 100,000) 그 다음 n개의 정수 h1, ..., hn (0 ≤ hi ≤ 1,000,000,000)가 주어진다. 이 숫자들은 히스토그램에 있는 직사각형의 높이이며, 왼쪽부터 오른쪽까지 순서대로 주어진다. 모든 직사각형의 너비는 1이고, 입력의 마지막 줄에는 0 6이 하나가 주어진다히스토그램 내에서 만들 수 있는 가장 큰 직사각형의 넓이를 구하는 문제다.문제 접근 (의식의 흐름대로)딱 문제를 보고 들었던 생각들을 정리하면 다음과 같다.일단 n이 10만이고, 직사각형 높이가 10억이니까 이걸 전부 반복시키면 안되겠다시간 복잡도를 무조건 생각해야..
[BOJ][G5] 2504 괄호의값
·
알고리즘 문제풀이
문제 내용‘()’ 인 괄호열의 값은 2이다.‘[]’ 인 괄호열의 값은 3이다.‘(X)’ 의 괄호값은 2×값(X) 으로 계산된다.‘[X]’ 의 괄호값은 3×값(X) 으로 계산된다.‘(()[[]])([])’ 의 괄호값을 구해보자. ‘()[[]]’ 의 괄호값이 2 + 3×3=11 이므로 ‘(()[[]])’의 괄호값은 2×11=22 이다. 그리고 ‘([])’의 값은 2×3=6 이므로 전체 괄호열의 값은 22 + 6 = 28 이다.문자열(스트링)이 주어진다. 단 그 길이는 1 이상, 30 이하문제 접근올바르지 못한 괄호열이면 반드시 0을 출력 이런경우 ‘+’ 로 계산 ‘[()]’ 경우 * 로 계산.(()[[]])([]) 를 처리하는 방법에 대해 생각해보자1. → 우선 올바른 괄호열인지 여부를 파악2. → valu..
[BOJ][S3] 17413_단어뒤집기2
·
알고리즘 문제풀이
알고리즘 BOJ_17413_단어뒤집기2_S3문제 내용문자열 S이 알파벳 소문자('a'-'z'), 숫자('0'-'9'), 공백(' ``'), 특수 문자('', '>')로만 이루어져 있다''와 '>'가 문자열에 있는 경우 번갈아가면서 등장'로 시작해서 '>'로 끝나는 길이가 3 이상인 부분 문자열이고, ''와 '>' 사이에는 알파벳 소문자와 공백만 있다. 단어는 알파벳 소문자와 숫자로 이루어진 부분 문자열이고, 연속하는 두 단어는 공백 하나로 구분무문제 접근문자열 S 에서 단어를 뽑아낸다. 뽑아내는 기준은 우선위로 로 구분을 하고 안 공백(' ')은 바뀌지 않고 외부의 공백(' ') 은 바뀌게 된다.일단 List 형태로 저장한다. 그리고 태그안에 들어가는 건지 아니면 그냥 문자열인지 구분하는 Lis..