PS 119

[백준 BOJ][stack] 10799 쇠막대기

10799_쇠막대기 링크 https://www.acmicpc.net/problem/10799 풀이 이 문제는 Stack을 사용해서 풀 수 있습니다. 일단 쇠막대기의 오른쪽 끝과 레이저를 구분해서 두 가지의 경우로 나누어 풀면 됩니다. 여는 괄호가 들어온다면 스택에 push하고 닫는 괄호가 들어온다면 pop을 해줍니다. 닫는 괄호가 들어왔을 때는 전의 괄호가 여는 괄호인지 닫는 괄호인지 확인합니다. 여는 괄호라면 레이저이기 때문에, 현재 쇠막대기만큼 즉, stack의 size만큼 더해주면 됩니다. 닫는 괄호라면 쇠막대기의 오른쪽 끝이기 때문에, 1을 더해주면 됩니다. 두 번째 예제를 실제로 그려서 계산해보면 이렇게 됩니다. 코드

PS/BOJ 2018.07.26

[백준 BOJ][stack] 9012 괄호

9012_괄호 링크 https://www.acmicpc.net/problem/9012 풀이 괄호 문제는 Stack으로 구현할 수 있습니다. 여는 괄호를 push, 닫는 괄호를 pop이라고 생각해줍니다. pop을 하기 전에 empty 체크를 해서 비어 있는데 pop을 했다면 잘못된 괄호 문자열이라고 체크해줍니다. 그리고 마지막에 괄호 문자열이 끝나고 스택의 empty 여부를 체크했을 때 안에 data가 있다면 괄호가 다 닫힌 게 아니므로 잘못된 괄호 문자열이라고 체크해줍니다. 1. empty인데 pop 시도할 경우 2. 끝났는데 empty가 아닐 경우 코드

PS/BOJ 2018.07.26

[백준 BOJ][sort] 11651 좌표 정렬하기 2

11651_좌표 정렬하기 2 링크 https://www.acmicpc.net/problem/11651 풀이 좌표를 먼저 y 좌표가 증가하는 순으로, y좌표가 같으면 x좌표가 증가하는 순으로 정렬하는 문제입니다. 우선 좌표를 표현하기 좋은 자료구조인 pair[]를 사용하겠습니다. sort()의 3번째 인자인 compare 함수를 정의해줘야 하는데요. bool compare(pair p1, pair p2)를 정의해줍시다. 1. y가 증가하는 순으로 -> if(p1.second != p2.second) return p1.second return p1.first < p2.first; pair 생성은 make_pair(x, y)로 할 수 있습니다..

PS/BOJ 2018.07.24

[백준 BOJ][sort] 11650 좌표 정렬하기

11650_좌표 정렬하기 링크 https://www.acmicpc.net/problem/11650 풀이 좌표를 먼저 x 좌표가 증가하는 순으로, x좌표가 같으면 y좌표가 증가하는 순으로 정렬하는 문제입니다. 우선 좌표를 표현하기 좋은 자료구조인 pair[]를 사용하겠습니다. sort()의 3번째 인자인 compare 함수를 정의해줘야 하는데요. bool compare(pair p1, pair p2)를 정의해줍시다. 1. x가 증가하는 순으로 -> if(p1.first != p2.first) return p1.first return p1.second < p2.second; pair 생성은 make_pair(x, y)로 할 수 있습니다. 코드

PS/BOJ 2018.07.24

[백준 BOJ][sort] 1181 단어 정렬

1181_단어 정렬 링크 https://www.acmicpc.net/problem/1181 풀이 sort() 함수의 세 번째 인자에 들어갈 compare 함수의 정의가 필요합니다. 첫 번째 조건은 길이가 짧은 것부터, 이 조건은 compare 함수의 인자가 (string a, string b)라고 했을 때, if(a.size() != b.size()) return a.size() < b.size(); 해주면 됩니다. 두 번째 조건은 길이가 같으면 사전 순으로, 이 조건은 return a < b; 해주면 됩니다. string이 사전순으로 처리해 주기 때문입니다. 마지막으로 중복 제거입니다. 저는 이전에 출력한 문자열을 저장해둔 다음, 출력할 때 비교하게 해서 출력시에 처리하기로 했습니다. 코드

PS/BOJ 2018.07.24

[백준 BOJ][sort] 10989 수 정렬하기 3

10989_수 정렬하기 3 링크 https://www.acmicpc.net/problem/10989 풀이 오름차순 정렬이지만 N의 범위가 10,000,000입니다. 그렇다면 배열에 담으면 메모리 초과가 나겠네요. 그래서 뒤의 조건인 ‘이 수는 10,000보다 작거나 같은 자연수이다’를 이용해서 arr[10001]을 만든 다음 입력 받은 수를 tmp라고 하면 arr[tmp]++을 해주고 출력할 때, 아래서부터 출력해주면 됩니다. 코드

PS/BOJ 2018.07.24
반응형