알고리즘 글
-
[백준] 2941번: 크로아티아 알파벳 (JAVA)
https://www.acmicpc.net/problem/2941문제설명문자열을 입력받으면 해당 문자열에 크로아티아 알파벳을 몇 개나 포함하고 있는지 출력하는 문제이다. 크로아티아 알파벳이 아닌 일반 알파벳들은 한 글자씩 센다.다만, 주의해야할 점은 "dz="의 경우 "z=" 값을 가지고 있어 문자열을 탐색할 때 2개가 포함되어있다라고 값을 반환할 수도 있기에 "dz="이 포함되어있을 경우에는 따로 조건을 추가해야한다. 코드import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.IOException;import java.io.InputStreamReader;import java.io.OutputStreamWriter;publi..
-
[백준] 5622번: 다이얼 (JAVA)
https://www.acmicpc.net/problem/5622 문제설명각 다이얼마다 알파벳 3개 + 숫자 1개로 구성되어있는데, 입력받은 알파벳 값에 맞게 몇 초가 걸리는지 합계를 구하여 출력하는 문제이다.(문제 예시)입력: ADBP => A는 숫자 2에 있고 3초가 걸림, D는 숫자 3에 있고 4초가 걸림, B는 숫자 2에 있고 3초가 걸림, P는 숫자 7에 있고 8초가 걸림. 그러면 출력은 이 걸린 시간들의 합을 출력하면 됨.출력: 18 코드import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.IOException;import java.io.InputStreamReader;import java.io.OutputStr..
-
[백준] 2153번: 소수 단어 (JAVA)
https://www.acmicpc.net/problem/2153 2153번: 소수 단어 소수란 1과 자기 자신으로만 나누어떨어지는 수를 말한다. 예를 들면 1, 2, 3, 5, 17, 101, 10007 등이 소수이다. 이 문제에서는 편의상 1도 소수로 하자. 알파벳 대소문자로 이루어진 영어 단어가 하나 www.acmicpc.net 문제 설명 기본적으로 a는 1, z는 26, A는 27, Z는 52라는 숫자로 표현한다. 그리고 입력받은 문자들의 숫자값의 합이 소수인지 아닌지를 판별하는 문제이다. 코드 import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStre..
-
[백준] 2902번: KMP는 왜 KMP일까? (JAVA)
https://www.acmicpc.net/problem/2902 2902번: KMP는 왜 KMP일까? 입력은 한 줄로 이루어져 있고, 최대 100글자의 영어 알파벳 대문자, 소문자, 그리고 하이픈 ('-', 아스키코드 45)로만 이루어져 있다. 첫 번째 글자는 항상 대문자이다. 그리고, 하이픈 뒤에는 반드 www.acmicpc.net 문제 설명 입력으로 하나의 문자열이 들어오는데 이 문자열에는 대문자, 소문자, 하이픈들이 있다. 이 문자열에서 대문자인 것들만 출력을 시키면 되는 문제이다. 코드 import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamRe..
-
[백준] 10987번: 모음의 개수 (JAVA)
https://www.acmicpc.net/problem/10987 10987번: 모음의 개수 알파벳 소문자로만 이루어진 단어가 주어진다. 이때, 모음(a, e, i, o, u)의 개수를 출력하는 프로그램을 작성하시오. www.acmicpc.net 문제 설명 한 문자열을 입력받는데, 그 문자열에 a, e, i, o, u가 포함되어 있는 개수를 출력하는 문제이다. 코드 import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; public class Main { public stati..
-
[백준] 4143번: 다음 소수 (JAVA)
https://www.acmicpc.net/problem/4134 4134번: 다음 소수 정수 n(0 ≤ n ≤ 4*109)가 주어졌을 때, n보다 크거나 같은 소수 중 가장 작은 소수 찾는 프로그램을 작성하시오. www.acmicpc.net 문제 설명 이 문제는 24039번 2021은 무엇이 특별할까?와 거의 비슷한 문제이다. 입력받은 수와 같거나 큰 소수를 구하는 문제이다. 코드 import java.io.BufferedReader; import java.io.InputStreamReader; import java.math.BigInteger; public class Main { static boolean prime[] = new boolean[10004002]; public static void m..
-
[백준] 1920번: 수 찾기 (JAVA)
https://www.acmicpc.net/problem/1920 1920번: 수 찾기 첫째 줄에 자연수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 N개의 정수 A[1], A[2], …, A[N]이 주어진다. 다음 줄에는 M(1 ≤ M ≤ 100,000)이 주어진다. 다음 줄에는 M개의 수들이 주어지는데, 이 수들 www.acmicpc.net 문제 설명 간단한 이분탐색을 하는 문제이다. 수들의 존재여부만 판단하면 되기 때문에 간단하다. 코드 import java.util.Arrays; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(Sys..
-
[백준] 5800번: 성적 통계 (JAVA)
https://www.acmicpc.net/problem/5800 5800번: 성적 통계 첫째 줄에 중덕 고등학교에 있는 반의 수 K (1 ≤ K ≤ 100)가 주어진다. 다음 K개 줄에는 각 반의 학생수 N (2 ≤ N ≤ 50)과 각 학생의 수학 성적이 주어진다. 시험 성적은 0보다 크거나 같고, 100보다 www.acmicpc.net 문제 설명 입력은 첫째 줄에 테스트케이스의 수, 그 다음 입력받은 줄에는 숫자의 개수, 그리고 숫자들을 입력받는다. 출력은 최댓값, 최솟값, 가장 큰 갭을 출력한다. 코드 package 알고리즘; import java.util.Arrays; import java.util.Collections; import java.util.Scanner; public class Mai..
-
[백준] 15688번: 수 정렬하기 5 (JAVA)
https://www.acmicpc.net/problem/15688 15688번: 수 정렬하기 5 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 숫자가 주어진다. 이 수는 절댓값이 1,000,000보다 작거나 같은 정수이며, 같은 수가 여러 번 중복될 수도 있다. www.acmicpc.net 문제 설명 문제에 보면 시간누적이라는 키워드가 있는데, 이게 무엇이냐면 이 문제를 채점하는데 총 걸리는 시간이 시간 제한에 알맞게 걸려야 정답 처리가 된다는 것이다. 자바는 30초로 30초안에 채점이 끝나야 정답이 된다. 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.Inpu..
-
[백준] 1427번: 소트인사이드 (JAVA)
https://www.acmicpc.net/problem/1427 1427번: 소트인사이드 첫째 줄에 정렬하려고 하는 수 N이 주어진다. N은 1,000,000,000보다 작거나 같은 자연수이다. www.acmicpc.net 문제 설명 공백없이 숫자들이 주어지는데, 이 숫자들을 정렬하여 공백없이 출력하면 된다. 코드 import java.util.Arrays; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String str = sc.next(); String[] num = str.split(""); int arr[] = new i..
-
[백준] 15965번: K번째 소수 (JAVA)
https://www.acmicpc.net/problem/15965 15965번: K번째 소수 자연수 K가 주어진다.(1 ≤ K ≤ 500,000) www.acmicpc.net 문제 설명 입력으로 숫자 하나를 받는데, 이 숫자 번째의 소수를 출력하면 된다. ex) 입력: 1 이면 1번째 소수를 출력한다 -> 출력: 2 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.List; public class Main { static boolean prime[] = new boolean[8000002]; publi..
-
[백준] 1747번: 소수&팰린드롬 (JAVA)
https://www.acmicpc.net/problem/1747 1747번: 소수&팰린드롬 어떤 수와 그 수의 숫자 순서를 뒤집은 수가 일치하는 수를 팰린드롬이라 부른다. 예를 들어 79,197과 324,423 등이 팰린드롬 수이다. 어떤 수 N (1 ≤ N ≤ 1,000,000)이 주어졌을 때, N보다 크거나 같고, www.acmicpc.net 문제 설명 입력받은 수보다 큰 소수들 중에서 그 숫자와 그 숫자를 뒤집은 숫자와 같은 수를 출력하는 문제이다 ex) 101은 뒤집어도 101이므로 팰린드롬 수이다. 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class M..
-
[백준] 1850번: 최대공약수
https://www.acmicpc.net/problem/1850 1850번: 최대공약수 모든 자리가 1로만 이루어져있는 두 자연수 A와 B가 주어진다. 이때, A와 B의 최대 공약수를 구하는 프로그램을 작성하시오. 예를 들어, A가 111이고, B가 1111인 경우에 A와 B의 최대공약수는 1이고, A www.acmicpc.net 문제설명 간단한 최대공약수 구하는 문제이지만, 만약 입력이 3 4면 111과 1111의 최대공약수를 구하는 문제이다. 코드 import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); long a = sc.nextLo..
-
[백준] 10828번: 스택
https://www.acmicpc.net/problem/10828 10828번: 스택 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Stack; public class Main { public static void main(String[] args) throws IOException { BufferedReade..
-
[백준] 12605번: 단어순서 뒤집기 (JAVA)
https://www.acmicpc.net/problem/12605 12605번: 단어순서 뒤집기 스페이스로 띄어쓰기 된 단어들의 리스트가 주어질때, 단어들을 반대 순서로 뒤집어라. 각 라인은 w개의 영단어로 이루어져 있으며, 총 L개의 알파벳을 가진다. 각 행은 알파벳과 스페이스로만 www.acmicpc.net 문제 설명 입력으로 this is a test가 들어오면 입력받은 것들의 순서를 바꿔서 test a is this로 출력하는 문제이다. 코드 import java.io.BufferedReader; import java.io.InputStreamReader; public class Main { public static void main(String[] args) throws Exception { ..
-
[백준] 7785번: 회사에 있는 사람(JAVA)
https://www.acmicpc.net/problem/7785 7785번: 회사에 있는 사람 첫째 줄에 로그에 기록된 출입 기록의 수 n이 주어진다. (2 ≤ n ≤ 106) 다음 n개의 줄에는 출입 기록이 순서대로 주어지며, 각 사람의 이름이 주어지고 "enter"나 "leave"가 주어진다. "enter"인 경우는 www.acmicpc.net 문제설명 현재 회사에 있는 사람을 구하는 문제인데, 예를 들면 Baha enter후 Baha leave라는 입력이 들어오면 Baha라는 사람은 퇴근을 한 것이므로 현재 회사에 없다. 즉 enter만 있는 사람들만 현재 회사에 있는 것이다. 코드 import java.util.ArrayList; import java.util.Collections; import..
-
[백준] 2693번: N번째 큰 수 (JAVA)
https://www.acmicpc.net/problem/2693 2693번: N번째 큰 수 첫째 줄에 테스트 케이스의 개수 T(1 ≤ T ≤ 1,000)가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 배열 A의 원소 10개가 공백으로 구분되어 주어진다. 이 원소는 1보다 크거나 같고, 1,000 www.acmicpc.net 문제설명 10개의 숫자들을 정렬해서 3번째로 큰 값을 구하는 문제이다. 코드 import java.util.ArrayList; import java.util.Collections; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scan..
-
[백준] 24039번: 2021은 무엇이 특별할까?
https://www.acmicpc.net/problem/24039 24039번: 2021은 무엇이 특별할까? 백준 온라인 저지의 송년대회 Good Bye BOJ, 2021!의 개최일은 2021년 12월 31일이다. 원이는 대회가 개최된다는 사실이 기뻐 제목을 뚫어져라 보다가 2021이 무언가 특별하다는 사실을 깨달았다. 그렇 www.acmicpc.net 이 문제는 2021년 마지막 날, Good Bye, BOJ 2021! 대회에서 첫 번째 문제이다. 문제설명 연속한 두 소수의 곱으로 이루어져있으면 그 수를 특별한 수라고 한다. ex) 2 x 3, 3 x 5, 5 x 7, 7 x 11 등등 그리고 출력은 내가 입력한 수 N보다 큰 특별한 수를 출력하는 것이다. 2020을 입력하면 43 x 47 = 202..
Java 글
-
[자바 Swing 기초] 1. 창 띄우기
오늘의 결과물 자바에서 GUI를 개발하기 위해서는 JFrame 클래스를 상속받아야 한다. 그러면 JFrame에 있는 메소드들을 사용할 수 있다. import javax.swing.JFrame; class 클래스명 extends JFrame 창을 띄우기 위해서는 상속만 받아서는 안된다. 생성자를 만들어서 그 안에 사이즈를 정해주고, 보여줘야한다. 필수적으로 있어야 하는 메소드들은 다음과 같다. setSize(int width, int height); setVisible(boolean b); setSize는 말그대로 창의 사이즈를 정해주는 메소드이다. 첫 번째 인자는 너비, 두 번째 인자는 높이이다. setVisible은 이 창을 보이게 할지, 안 보이게 할지 정하는 메소드이다. true를 하면 보이게 한다..
-
Spring Boot에서 Native Query 사용
프로젝트를 진행하면서 내가 직접 쿼리를 사용해 구현하고 싶은 것이 생길 때 사용하는 것이 JPQL or NativeQuery입니다.코드 관점으로 보면 두 개의 개념은 비슷합니다. 원래 JPA만 사용할 경우 메서드 명명규칙에 따라서 자동으로 쿼리를 생성해 주는데, 이게 아닌 개발자가 직접 원하는 결과를 반환하는 쿼리를 작성하는 것입니다. 다만, 차이점이라고 하면 쿼리 작성 요령이 다릅니다.ex) "user"라는 테이블에서 모든 값을 가져오고 싶을 때1. JPQL의 경우@Query(value = "SELECT * FROM User WHERE id = ?1")Optional selectAll(String id); 2. Native Query의 경우@NativeQuery(value = "SELECT * FROM..
-
JavaScript -> RestController POST 통신 오류
Spring Boot 프로젝트를 하던 도중 프론트-백 분리 구조를 활용해서 코드 작성 중 이유를 알 수 없는 오류가 발생하고 있었습니다그 어떤 로그도 안 찍히길래 뭔 문제인가... 하루를 고민했는데 해결방법을 찾았습니다. 1. 오류의 원인일단, 문제가 뭐였냐면 javascript 단에서 ajax로 post url 요청을 controller 쪽으로 하는 상황이었는데, 회원가입 성공을 했을 경우 요청이 controller쪽에 닿지도 못하는 문제가 발생했었습니다. 근데 이게 로그도 찍히는 게 아니고.. 오류 문구도 없으니까 도대체 뭐가 문제인지를 몰랐었는데.. javascript 코드 쪽은 문제가 없어 보였습니다. (아래는 제 프로젝트의 js 코드입니다.)$.ajax({ type: "POST", u..
-
Spring boot를 이용한 게시판 만들기 - 등록, 수정, 조회 API 만들기(3)
본격적으로 API를 만들기 전에 PostsRepository에 id를 기준으로 정렬하는 쿼리 함수 하나를 작성하도록 하겠습니다. public interface PostsRepository extends JpaRepository { @Query("select p from Posts p order by p.id desc") List findAllDesc(); } JPA에서는 함수명을 지을 때 키워드가 있으면 그 키워드에 맞게 자동으로 SQL을 짜줍니다. 예를 들면 함수명이 findByIdOrderByDateAsc(Long id)면 JPA에서 다음과 같은 쿼리를 만들어줍니다. SELECT * FROM [JpaRepository의 엔티티] WHERE id=?1 ORDER BY date ASC 하지만 이런 키워드..
-
Spring boot를 이용한 게시판 만들기 - 유저, 게시물 엔티티 및 리포지토리 만들기(2)
일단 시작하기 전에 패키지를 아래와 같이 나누도록 하겠습니다. domain 패키지: 엔티티 및 리포지토리 클래스가 있는 패키지 controller 패키지: 컨트롤러 클래스가 있는 패키지 dto 패키지: DTO 클래스가 있는 패키지 오늘은 엔티티 및 리포지토리 클래스를 만들도록 하겠습니다. 1. 유저 (Users) 엔티티 클래스에는 기본적으로 @Entity와 @Getter, 그리고 NoArgsconstructor 어노테이션을 사용합니다. @Entity: 이 클래스가 엔티티임을 정의함 @Getter: 말 그대로 getter 메소드를 정의함 @NoArgscontructor: 기본 생성자인데, 엔티티 클래스에서는 기본적으로 꼭 필요하다. User 클래스 package com.example.board.web.do..
-
Spring boot를 이용한 게시판 만들기 - JPA를 이용하여 데이터베이스 연결(1)
저번에는 JPA가 아니라 MyBatis로 연동을 하였는데, 이번에는 JPA를 사용해서 데이터베이스 연결을 하도록 하겠습니다. (쉬움) 일단 Spring Initializr를 이용해서 프로젝트를 생성해 줍니다. https://start.spring.io/ 사이트에 들어가서 위 사진과 같이 세팅을 하고 아래에 GENERATE 버튼을 눌러서 프로젝트를 다운로드합니다. IntelliJ 혹은 Eclipse를 이용해서 다운로드한 프로젝트를 열어줍니다. (저는 개인적으로 인텔리제이를 사용합니다.) 프로젝트를 열게 되면 색인 생성 및 빌드를 하는데, 약 1분에서 2분 정도 기다려주면 끝납니다. 이제 기본적인 세팅을 하겠습니다. src/main/resources 폴더 안에 application.properties 리소스..
-
Spring boot에서 Controller가 먹지 않는 에러
분명 templates파일에 home.html이라는 파일을 만들고 HomeController클래스를 만들어서 home.html을 반환하는 메소드를 만들었다. import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; @Controller public class HomeController { @RequestMapping(value = "/") public String home() { return "home"; } } 그런데 이상하게도 애플리케이션을 실행하였을 때, home.html을 반환하지를 못하였다. 처음에는 Mapping 어노테이션을 이상한 거를 쓰고 있어서 ..
-
Spring boot 엔티티 매핑
JPA에서는 엔티티와 테이블을 정확하게 매핑하는 것이 중요하다. 그래서 매핑하는 어노테이션들을 숙지하고 사용해야 한다. JPA는 다음과 같은 매핑 어노테이션들을 지원한다. 객체와 테이블 매핑 : @Entity, @Table Primary key 매핑 : @Id 필드와 Column 매핑 : @Column 연관관계 매핑 : @ManyToOne, @JoinColumn @Entity JPA를 이용해서 테이블과 매핑할 클래스는 @Entity라는 어노테이션을 필수로 붙여야 한다. @Entity는 name이라는 속성을 가지고 있는데 이는 JPA에서 사용할 엔티티 이름을 지정한다. 이를 설정하지 않으면 클래스 이름을 그대로 사용한다. @Entity // name 속성x -> Member라는 이름을 사용 public c..
-
Spring boot를 이용한 게시판 구현하기 - 데이터베이스 연결하기(1)
1. Spring Starter Project 생성 next를 누르면 스프링 부트 의존성 설정을 해야한다. 이렇게 설정을 해준다. 라이브러리의 다운로드가 완료되고 board 프로젝트가 생성된 후에 build.gradle 파일을 열면 위에서 선택한 라이브러리들이 추가되어 있는 것을 알 수 있다. dependencies { implementation 'org.springframework.boot:spring-boot-starter-data-jdbc' implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.springframework.boot:spring-boot-starter-jdbc' implemen..
-
Spring 개발환경 구축하기
Spring을 공부하기 위해서 개발환경을 구축할려고 하였는데 생각보다 에러가 많고 힘들었어서 이 포스팅에다가 정리를 해놓을려고 한다. 이 글을 보기 전에 자바를 다운로드 하셔야합니다. 구글에다가 검색을 해보면 다운로드하고 환경 변수를 설정하는 방법이 다 나와있습니다. 제가 추천하는 글을 이 글입니다. (자바 11버전 다운로드) https://crazykim2.tistory.com/478 [JAVA] Window10의 JAVA SE 11 설치하기 안녕하세요 포스팅이 늦은 것 같지만 이번에 윈도우를 포맷하면서 자바를 다시 설치하게 되었습니다 자바 개발을 처음하거나 자바를 설치한지 오래되어서 기억이 안 나는 분들을 위해 자바 설 crazykim2.tistory.com 1. Spring 다운로드하기 https:..
-
Java Swing과 AWT를 이용하여 원 돌아가는 애니메이션 만들기
import java.awt.Color; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.RenderingHints; import java.awt.geom.Arc2D; import javax.swing.JFrame; import javax.swing.JPanel; public class CircleAnimation extends JFrame { JPanel jp; int arc; // 각도 public CircleAnimation() { super("Circle Animation"); this.setSize(500, 500); this.setLocationRelativeTo(null); this.add(jp = new JPane..
-
[Android 공부] Spring Boot와 연계를 통한 로그인 구현 (1)
기존에 진행 중이던 프로젝트 "FlipMarket"을 안드로이드 버전으로도 개발하면 괜찮겠다고 생각해서 웹 개발과 병행하며 진행 중에 있습니다.솔직히 이 프로젝트는 할 필요 없었는데, 곧 선발전 대회가 있어서 대비할 겸 공부하자 생각해서 진행하게 되었습니다. 백엔드 설정1. 필요한 의존성 추가 및 DB 연결Spring Security + JWT를 활용해서 로그인을 구현할 것이므로 이와 관련된 라이브러리 의존성을 추가했습니다. 그 외의 것들은 이 후에 개발할 때 편의를 위함과 기본적인 라이브러리들을 추가했습니다.dependencies { implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.spri..
VBA 글
-
VBA를 활용한 애니메이션 만들기
엑셀에서 애니메이션을 넣고 싶을 때는 VBA를 활용하면 되게 편하다. VBA에서 DoEvents라는 함수를 사용하면 된다. 엑셀 시트 VBA 화면 VBA 애니메이션 코드 Private Sub CommandButton1_Click() For i = 0 To 100 Shapes("직사각형 1").Left = i * 2 DoEvents Next End Sub 이러면 결과는 도형이 부드럽게 오른쪽으로 움직이는 것을 볼 수 있다.
-
VBA에서의 정규식
If Not (TextBox2 Like "*[0-9]*" And TextBox2 Like "*[a-zA-Z]*" And TextBox2 Like "*[@!#$]*") Then End If TextBox2는 폼에 있는 텍스트상자이다. 정규식 중에서도 가장 많이 쓰이는 특수문자, 숫자, 문자에 대한 정규식이다. CreateObject("vbScript.RegExp")를 사용하는 방법도 있지만 나는 개인적으로 그냥 간단하게 이렇게 정규식을 짜는게 더 편한것 같다. 결론