구현 3

백준 2108(JAVA)

문제 https://www.acmicpc.net/problem/2108 2108번: 통계학 첫째 줄에 수의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 단, N은 홀수이다. 그 다음 N개의 줄에는 정수들이 주어진다. 입력되는 정수의 절댓값은 4,000을 넘지 않는다. www.acmicpc.net 풀이 산술평균 더해서 나누면 되는데, -1.8인 경우 반올림하면 -1이아닌 -2가 되어야함. 이 부분을 처리하기 위해 나는 나눈 값 절대값으로 바꾼 뒤, Math.round를 이용 오랜만에 자바를 해서 그런지 나눌때 auto casting되는걸 까먹었당. int / int => int가 된다. 그래서 피연산자 둘중 하나를 명시적으로 double로 casting 후 나눠야한다. 중앙값 ArrayList를 이..

algorithm 2022.06.15

백준 11723(JAVA)

문제 https://www.acmicpc.net/problem/11723 11723번: 집합 첫째 줄에 수행해야 하는 연산의 수 M (1 ≤ M ≤ 3,000,000)이 주어진다. 둘째 줄부터 M개의 줄에 수행해야 하는 연산이 한 줄에 하나씩 주어진다. www.acmicpc.net 풀이 처음에는 21 length를가진 boolean 배열을 이용했는데, 그냥 집합 자료구조를 이용하면 쉽다. 집합은 중복이 되지 않고, 집합의 특정 값에 접근할때, 값을 해쉬하여, 특정 버킷에 바로바로 접근가능하여 빠르다. 집합은 순서 X, 정렬 X, 중복 X 코드 배열 이용 package baekjoon.구현; import java.io.*; import java.util.Arrays; import java.util.Stri..

algorithm 2022.06.13

백준 1541(JAVA)

문제 https://www.acmicpc.net/problem/1541 1541번: 잃어버린 괄호 첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다 www.acmicpc.net 풀이 제일 작은 수가 되려면 -가 나오고 뒤에 +들이 나오면 -(a + b + c + d +...)만 고려하면 된다. 처음에 나는 split이 생각나지않아, 결과 스택과 버퍼 스택을 만들어서, -가 나온다음 뒤에 +들이 나오면 버퍼 스택에 다 넣고 다시 - 가나오면 버퍼스택의 값들 다 더해서 - 붙인 값을 결과 스택에 넣고.. 이런 복잡한 방법으로 풀려 노력했다. 그냥 문자열 split..

algorithm 2021.09.30