분류 전체보기 34

[백준 JAVA] 1929 - 소수 구하기

에라토스 테네스의 체의 알고리즘을 안다면 매우 쉽게 구현이 가능하다! 시간복잡도, 메모리 제한은 에라토스 테네스의 체의 시간 복잡도가 O(n*log log n)이기 때문에 충분하다고 판단했다.내가 생각한 로직은 이렇다에라토스 테네스의 체 알고리즘 사용arr[M] ~ arr[N]의 배열에 소수 판별 후 출력 [최종코드]import java.io.*;import java.util.*;public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokeniz..

[알고리즘] 에라토스 테네스의 체란?

에라토스 테네스의 체란?여러 개의 수가 소수인지 아닌지 판별할 때 사용하는 대표적인 알고리즘이다.소수를 구하는 가장 기본적이고 이해하기 쉬운 방법 중 하나이다. 어떻게 동작하는가?리스트 생성: 2부터 원하는 최대 숫자 N까지의 리스트를 만듦첫 번째 소수 선택: 가장 작은 소수인 2부터 시작배수 제거: 선택한 소수의 배수를 리스트에서 제거하거나 표시다음 소수 찾기: 리스트에서 다음으로 남아있는 수를 선택하고, 이 수의 배수를 제거반복: 이 과정을 N의 제곱근까지 반복  시간 복잡도는??에라토스테네스의 체의 시간 복잡도는 놀랍게도 O(N log log N)이다.log log N은 매우 천천히 증가하는 함수로, N이 실용적인 범위 내에서는 거의 상수에 가깝다.즉, 해당 알고리즘은 사실상 선형 시간에 가까운 ..

[백준 JAVA] 1978 - 소수 찾기

기본적인 소수 찾기 문제이다! 매우 쉬운 문제이며 필자는 예전에 소수문제를 에라토스테네스의 체를 공부해서 푼 기억이 난다.이참에 다시 복습할 겸, 간단한 문제여도 해당 알고리즘을 사용하기로 결심했다! 에라토스테네스의 체는 시간복잡도가 O(n * log  long n)이기 때문에 더더욱 시간 복잡도는 충분하다고 생각했다.또한 N의 수가 1000개 이하의 자연수라는 점에서 메모리 제한도 충분하다고 생각했다. 이번에는 로직은 따로 없다. [최종코드]import java.io.*;import java.util.*;public class Main { public static void main(String[] args) throws IOException { BufferedReader br = ne..

백준허브 - 빨간 체크표시 해결법 (feat.CORS)

필자는 백준허브를 잘 사용하다가, 어느 순간 깃허브에 내가 푼 문제들이 업로드되지 않는다는 것을 느꼈다! 그래서 인터넷에 쳐보니, CORS관련 오류로 인해 업로드 오류가 생긴다고 한다. 해결법 1 - Modesif Origin Modesif Origin을 다운받고, CORS를 ON 해봤다! 하지만,,, 나는 실패,, 해결법 2 - Allow CORS똑같이 Allow CORS를 다운받고, off 상태에서 3번 Access-Control-Allow-Headers 체크하기! 결과는 또 실패,, 돌고돌아 포기하고 있었는데,, 나는 해당 오류가 뜰 무렵에 팀프로젝트를 하고 있었다.  ModHeader에 Token값을 넣어 JWT 사용을 위해 다운로드한 건데, 해당 Token이 꼬여서 그런 게 아닌가 싶었다! 혹..

[백준 JAVA] 9506 - 약수들의 합

문제 자체는 쉬웠지만, 문제 해석을 잘못 해석해 애먹은 문제였다..! 먼저 내가 생각한 로직은 이렇다.while(n ArrayList 적재for (sum += ArrayList.get(i))sum == num -> 약수 합 출력sum != num -> n is NOT perfect 출력 해당 로직을 보면 알다시피 완전수를 구하는 문제였는데, 필자는 그냥 테스트 케이스만 보고 순서대로 반복문으로 약수의 누적합을 비교해서 출력해 버린 것이었다! (맙소사,,) 먼저 내가 처음 작성한 코드다.import java.io.*;import java.util.*;public class Main { public static void main(String[] args) throws IOException { ..

[백준 JAVA] 2501 - 약수 구하기

해당 문제도 쉬운 문제였다! 해당 문제는 시간 복잡도와 메모리 제한은 10,000개 이하이기 때문에 신경 안 써도 된다고 판단했다! 내가 생각한 로직이다.for (i = 0; i 배열에 i값 적재출력값에 arr[k-1]값 출력 여기서 생각한건, 기본적인 arr를 사용한다면 k번째의 값을 구하는 로직이 복잡해지기 때문에 ArrayList로 구현했다![최종코드]import java.io.*;import java.util.*;public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in..

[백준 JAVA] 5086 - 배수와 약수

이번 문제는 배수와 약수 문제로 쉬운 문제였다! 여기서 의문이 있었는데, 만약 예시로 15 15라고 했을 때, 약수와 배수 둘 다여서 고민을 했지만, 문제를 잘 보면 두 수가 같은 경우는 없다고 제약조건이 있었다! 시간제한과 메모리제한은 테스트 케이스가 작아 신경 안 써도 된다고 판단했다! 내가 생각한 로직이다.token2 % token1 == 0 -> factortoken1 % token2 == 0 -> multiple아니면 neither [최종 코드]import java.io.*;import java.util.*;public class Main { public static void main(String[] args) throws IOException { BufferedReader b..

[백준 JAVA] 2745 - 진법 변환

구현 자체는 쉬운 문제였지만, 문제 자체가 나에겐 어려운 문제였다. 진법 변환에 미숙한 나에게는 굉장히 어려웠다. 급하게 해당 진법 변환에 대해 공부한 뒤, 문제를 풀게 되었다. 시간제한과 메모리 제한은 신경 안 써도 된다고 판단했다. 내가 생각한 로직이다.10진법이 문제.만약 ZZZZZ라면, Z = 35, 아스키코드로는 90, 즉 -55만약 0 ~ 9라면, 아스키 코드는 -48 or -'0' 해당 문제를 푸려면 아스키 코드와 진법에 대해 잘 알아야 되는 게 포인트다! 최종코드import java.io.*;import java.util.*;public class Main { public static void main(String[] args) throws IOException { Buf..

[백준 JAVA] 2903 - 중앙 이동 알고리즘

생각보다 생각을 많이 한 문제였다. 처음에는 그냥 머릿속으로 슥슥 푸려고 했는데, 패턴을 찾을 듯 말 듯하다 결국 포기하고 펜을 들고 종이에 써서 생각한 문제였다. 시간제한과 메모리 제한은 입력 값이 매우 작아 구현에 어려움은 없다고 판단했다. 그렇게 나온 로직이 이렇다.기준 31이 증가할 때 마다 *2 - 1 종이로 쓰면서 생각하니깐 바로 문제가 풀렸다! [최종코드]import java.io.*;public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int..

음성 인식 기반 AI 문자 및 이미지 전송 서비스 - PPURISAM

본 프로젝트는 [SW 프리캡스톤 디자인 교과목]을 통해 [다우기술]과 연계하여 진행되었습니다.Introduction 디지털 정보화 시대에도 여전히 디지털 서비스를 이용하기 어려운 계층이 존재합니다. PPURISAM은 이러한 문제를 해결하기 위해 탄생한 서비스로, 음성 인식 기술과 생성형 AI를 결합해 누구나 쉽고 빠르게 문자와 이미지를 생성하고 전송할 수 있는 솔루션을 제공합니다.  이 서비스는 음성 인식 기반의 텍스트 입력과 문자와 어울리는 이미지 생성이라는 차별화된 기능을 통해 사용자 경험을 혁신합니다. 특히, 고령층과 디지털 소외 계층을 포함한 다양한 사용자들에게 직관적이고 접근 가능한 서비스를 제공합니다. 예를 들어, 고령층 사용자는 음성 명령만으로 손쉽게 메시지를 작성하고 공유할 수 있어 디지털..