Algorithm2024. 9. 30. 01:52[백준 2792/Java] 보석 상자

문제https://www.acmicpc.net/problem/2792 보석 공장에서 보석 상자를 유치원에 기증했다. 각각의 보석은 M가지 서로 다른 색상 중 한 색상이다. 원장 선생님은 모든 보석을 N명의 학생들에게 나누어 주려고 한다. 이때, 보석을 받지 못하는 학생이 있어도 된다. 하지만, 학생은 항상 같은 색상의 보석만 가져간다. 한 아이가 너무 많은 보석을 가져가게 되면, 다른 아이들이 질투를 한다. 원장 선생님은 이런 질투심을 수치화하는데 성공했는데, 질투심은 가장 많은 보석을 가져간 학생이 가지고 있는 보석의 개수이다. 원장 선생님은 질투심이 최소가 되게 보석을 나누어 주려고 한다. 상자에 빨간 보석이 4개 (RRRR), 파란 보석이 7개 (BBBBBBB) 있었고, 이 보석을 5명의 아이들에게..

아호 코라식(Aho-Corasick) 알고리즘(2)
Algorithm2024. 8. 20. 17:28아호 코라식(Aho-Corasick) 알고리즘(2)

우아한형제 기술블로그를 보던 중, 이목을 끄는 제목을 발견하고 글을 읽게 되었습니다. 고르곤졸라는 되지만 고르곤 졸라는 안 돼! 배달의민족에서 금칙어를 관리하는 방법 | 우아한형안녕하세요! 셀러시스템팀에서 서버 개발을 하고 있는 김예빈이라고 합니다. 배달의민족에는 금칙어를 관리하는 "통합금칙어시스템"이라는 것이 있습니다. 금칙어란? 법 혹은 규칙으로 사용이techblog.woowahan.com 지난 글에서 아호 코라식 알고리즘과 트라이 구조에 대해 정리하였습니다.https://kyko.tistory.com/59 아호 코라식(Aho-Corasick) 알고리즘(1)우아한형제 기술블로그를 보던 중, 이목을 끄는 제목을 발견하고 글을 읽게 되었습니다. 고르곤졸라는 되지만 고르곤 졸라는 안 돼! 배달의민족에서 금..

아호 코라식(Aho-Corasick) 알고리즘(1)
Algorithm2024. 8. 14. 13:49아호 코라식(Aho-Corasick) 알고리즘(1)

우아한형제 기술블로그를 보던 중, 이목을 끄는 제목을 발견하고 글을 읽게 되었습니다. 고르곤졸라는 되지만 고르곤 졸라는 안 돼! 배달의민족에서 금칙어를 관리하는 방법 | 우아한형안녕하세요! 셀러시스템팀에서 서버 개발을 하고 있는 김예빈이라고 합니다. 배달의민족에는 금칙어를 관리하는 "통합금칙어시스템"이라는 것이 있습니다. 금칙어란? 법 혹은 규칙으로 사용이techblog.woowahan.com블로그를 통해 아호 코라식 알고리즘에 대해 알게 되었고, 이번 기회에 정리해보고자 합니다. 서론텍스트에서 단일 패턴을 탐색하는 알고리즘은 KMP를 통해 선형 시간(N + M)에 패턴을 찾을 수 있음을 증명하였습니다.하지만 텍스트에서 여러 개의 패턴을 동시에 탐색해야 한다면 어떻게 해야 할까요?먼저, 다음과 같은 방법..

KMP 알고리즘이란?
Algorithm2024. 8. 5. 00:15KMP 알고리즘이란?

우아한형제 기술블로그를 보던 중, 이목을 끄는 제목을 발견하고 글을 읽게 되었습니다. 고르곤졸라는 되지만 고르곤 졸라는 안 돼! 배달의민족에서 금칙어를 관리하는 방법 | 우아한형안녕하세요! 셀러시스템팀에서 서버 개발을 하고 있는 김예빈이라고 합니다. 배달의민족에는 금칙어를 관리하는 "통합금칙어시스템"이라는 것이 있습니다. 금칙어란? 법 혹은 규칙으로 사용이techblog.woowahan.com블로그를 통해 아호코라식 알고리즘에 대해 알게 되었습니다.아호코라식 알고리즘은 일대다 패턴 매칭 알고리즘으로, 개선의 여지가 없을 정도로 완벽한 성능을 자랑한다고 알려져 있습니다.아호코라식 알고리즘을 공부하기에 앞서, 문자열 매칭 알고리즘인 KMP 알고리즘에 대해 먼저 학습하면, 나중에 아호코라식 알고리즘을 이해하는..

[백준 9663/Java] N-Queen
Algorithm2023. 5. 7. 19:58[백준 9663/Java] N-Queen

문제 N-Queen 문제는 크기가 N × N인 체스판 위에 퀸 N개를 서로 공격할 수 없게 놓는 문제이다. 9663번: N-Queen N-Queen 문제는 크기가 N × N인 체스판 위에 퀸 N개를 서로 공격할 수 없게 놓는 문제이다. N이 주어졌을 때, 퀸을 놓는 방법의 수를 구하는 프로그램을 작성하시오. www.acmicpc.net 풀이 과정 이 문제를 해결하기 위해 백트래킹 기법을 사용하였습니다. 백트래킹(Backtracking)이란? : 해를 찾는 도중 해가 아니어서 막히면, 되돌아가서 다시 해를 찾아가는 기법을 의미한다. 최적화 문제와 결정 문제를 푸는 방법이 된다. check_col 함수를 통해 같은 행에 퀸이 있는지를 체크하고, check_diagonal 함수를 통해 대각선에 퀸이 배치되어 ..

[백준 1874/Java] 스택 수열
Algorithm2023. 3. 18. 20:25[백준 1874/Java] 스택 수열

문제 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 풀이 과정 이 문제를 풀면서 가장 많이 본 에러가 출력 초과였습니다. 원인은 BufferedWriter에 있었습니다. 문제를 보시면 입력된 수열을 만들 수 있다면 +,-로 표현하고 불가능한 경우에는 NO를 출력해야 합니다. BufferedWriter의 flush는 직접 호출하지 않아도 출력 양이 내부 버퍼의 크기를 초과하면 자동으로 호출됩니다. 그렇기에 n의 값이 커져서 Bu..

[백준 24267/Java] 알고리즘 수업 - 알고리즘 수행 시간 6
Algorithm2023. 3. 14. 21:11[백준 24267/Java] 알고리즘 수업 - 알고리즘 수행 시간 6

문제 24267번: 알고리즘 수업 - 알고리즘의 수행 시간 6 오늘도 서준이는 알고리즘의 수행시간 수업 조교를 하고 있다. 아빠가 수업한 내용을 학생들이 잘 이해했는지 문제를 통해서 확인해보자. 입력의 크기 n이 주어지면 MenOfPassion 알고리즘 수행 시 www.acmicpc.net 풀이 과정 n값이 7인 경우를 생각해 보겠습니다. 이 경우, i값은 1 ~ 5까지 될 수가 있습니다. i = 1이면, j의 값은 2 ~ 6가 될 수 있고, j값이 2이면, k의 값은 3 ~ 7이 될 수 있으므로 코드 1의 수행 횟수는 5회가 됩니다. j k의 범위 수행 횟수 2 3 ~ 7 5 3 4 ~ 7 4 4 5 ~ 7 3 5 6 ~ 7 2 6 7 ~ 7 1 이를 종합하면 i = 1인경우, 코드 1의 수행횟수는 (..

[알고리즘] 자바 코드 실행 시간 단축 Tip (백준 2167)
Algorithm2023. 3. 12. 21:05[알고리즘] 자바 코드 실행 시간 단축 Tip (백준 2167)

백준 문제를 풀다가 코드 실행시간이 다른 정답자분들의 비해 커서 조금이라도 시간을 단축하는 방법이 있는지 찾아보다가 알게 된 정보에 대해서 공유하고자 합니다! 보시면 굉장히 차이가 많이 나는 것을 확인할 수 있습니다. 상위 등수에 있는 분들의 코드를 보면 공통적으로 보이는 점이 있습니다. 1. Scanner이 아닌 BufferedReader 사용 Scanner의 경우 1KB 크기의 상대적으로 작은 버퍼를 갖기에 입력을 받는 즉시 전달되지만 BufferedReader의 경우는 8KB 크기의 버퍼를 가지고 있어 버퍼에 입력값들을 저장해 둔 뒤에 한 번에 전송하기 때문에 속도가 더 빠르다고 합니다! 그뿐만 아니라, Scanner는 입력 과정에서 내부에서 정규 표현식 적용, 입력값 분할, 파싱 과정 등을 거치기..

image