본문 바로가기
컴퓨터구조 4주차 BCD 코드 10진수 1자리를 2진수 4Bit로, 8421 코드라고도 한다 137 BCD로 하면 0001 0011 0111 표준 BCD 코드 - 존 비트2개 + BCD 코드 대문자, 숫자만 가능하다 숫자는 1~9 다음 0 이 온다고 생각하는게 편하다 1 이 00 0001, 9가 00 1001 이고 0이 00 1010 이다 EBCDIC Zone2를 보고 숫자를 적으면 되는 것 같다 아스키코드 문자 A는 100 0001 부터 올라가서 O는 100 1111이 되고 그 이상부터인 P부터는 101 0000 부터 올라간다 문자 a는 110 0001 부터 올라가서 z는 111 1010이 된다 숫자 0 - 110000, 숫자 9 - 111001 Excess-3 (3초과 코드) bcd 코드에 3을 더한다 6(0110)을.. 2024. 3. 30.
백준 6236 용돈관리 (매개변수 탐색) 문제 현우는 용돈을 효율적으로 활용하기 위해 계획을 짜기로 하였다. 현우는 앞으로 N일 동안 자신이 사용할 금액을 계산하였고, 돈을 펑펑 쓰지 않기 위해 정확히 M번만 통장에서 돈을 빼서 쓰기로 하였다. 현우는 통장에서 K원을 인출하며, 통장에서 뺀 돈으로 하루를 보낼 수 있으면 그대로 사용하고, 모자라게 되면 남은 금액은 통장에 집어넣고 다시 K원을 인출한다. 다만 현우는 M이라는 숫자를 좋아하기 때문에, 정확히 M번을 맞추기 위해서 남은 금액이 그날 사용할 금액보다 많더라도 남은 금액은 통장에 집어넣고 다시 K원을 인출할 수 있다. 현우는 돈을 아끼기 위해 인출 금액 K를 최소화하기로 하였다. 현우가 필요한 최소 금액 K를 계산하는 프로그램을 작성하시오. 입력 1번째 줄에는 N과 M이 공백으로 주어진.. 2024. 3. 28.
모바일로봇 4주차 오늘한거 시험에 나온다 중간고사에 오늘쓴거 나온다 2024. 3. 27.
백준 2805 나무자르기 (매개변수 탐색) 파라메트릭 서치 : 이분탐색과 비슷하나 범위 값 중에서 찾는 방법 l = 0, r = 가능한 최대 값으로 하고 범위를 이분탐색처럼 좁혀가면서 가능한 값을 찾는다 문제 상근이는 나무 M미터가 필요하다. 근처에 나무를 구입할 곳이 모두 망해버렸기 때문에, 정부에 벌목 허가를 요청했다. 정부는 상근이네 집 근처의 나무 한 줄에 대한 벌목 허가를 내주었고, 상근이는 새로 구입한 목재절단기를 이용해서 나무를 구할것이다. 목재절단기는 다음과 같이 동작한다. 먼저, 상근이는 절단기에 높이 H를 지정해야 한다. 높이를 지정하면 톱날이 땅으로부터 H미터 위로 올라간다. 그 다음, 한 줄에 연속해있는 나무를 모두 절단해버린다. 따라서, 높이가 H보다 큰 나무는 H 위의 부분이 잘릴 것이고, 낮은 나무는 잘리지 않을 것이다.. 2024. 3. 27.
백준 2417 정수 제곱급 문제 정수가 주어지면, 그 수의 정수 제곱근을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 정수 n이 주어진다. (0 ≤ n < 263) 출력 첫째 줄에 q2 ≥ n인 가장 작은 음이 아닌 정수 q를 출력한다. 예제 입력 1 복사 122333444455555 예제 출력 1 복사 11060446 풀이 단위가 커서 long 자료형을 사용햇고 m이 value의 제곱근 이상인 경우는 m이 더 커지면 무조건 value의 제곱근 보다 크니 r을 줄이고 작으면 m보다 작은 값은 절대 value의 제곱근 보다 클 수 없으니 l을 m+1 하면서 이분탐색 했다 import java.awt.*; import java.io.IOException; import java.util.Arrays; import java.util.S.. 2024. 3. 27.
백준 28470 문제 복서 성우는 항상 공격과 회피를 연속적으로 한다. 슥~빡! 빡~슥! 즉, 피하고 때리거나, 때리고 피한다. 어느 날, 복서 성우는 숙명의 라이벌 성준이와 복싱 경기를 치르게 되었다. 이 경기에서 성우는 오직 N번의 공격-회피 연속 동작을 통해 성준을 상대할 예정이다. 성우는 매 공격-회피 연속 동작 시의 체내 아드레날린 변화량을 정확히 알고 있다. i번째 공격-회피 연속 동작 상황에서, 공격 시에는 체내 아드레날린이 A_i만큼 증가하고, 회피 시에는 체내 아드레날린이 B_i만큼 감소한다. 또한 i번째 공격-회피 연속 동작 상황에서, 공격을 먼저 한다면, 공격 시 체내 아드레날린 증가량이 A_i에서A_i * K_i로 바뀌고, 회피를 먼저 한다면, 회피 시 체내 아드레날린 감소량이 B_i에서B_i * .. 2024. 3. 24.
백준 10816 (map) 문제 숫자 카드는 정수 하나가 적혀져 있는 카드이다. 상근이는 숫자 카드 N개를 가지고 있다. 정수 M개가 주어졌을 때, 이 수가 적혀있는 숫자 카드를 상근이가 몇 개 가지고 있는지 구하는 프로그램을 작성하시오. 입력 첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10,000,000보다 작거나 같다. 셋째 줄에는 M(1 ≤ M ≤ 500,000)이 주어진다. 넷째 줄에는 상근이가 몇 개 가지고 있는 숫자 카드인지 구해야 할 M개의 정수가 주어지며, 이 수는 공백으로 구분되어져 있다. 이 수도 -10,000,000보다 크거나 같고, 10,0.. 2024. 3. 24.
백준 2467(이분탐색) 문제 KOI 부설 과학연구소에서는 많은 종류의 산성 용액과 알칼리성 용액을 보유하고 있다. 각 용액에는 그 용액의 특성을 나타내는 하나의 정수가 주어져있다. 산성 용액의 특성값은 1부터 1,000,000,000까지의 양의 정수로 나타내고, 알칼리성 용액의 특성값은 -1부터 -1,000,000,000까지의 음의 정수로 나타낸다. 같은 양의 두 용액을 혼합한 용액의 특성값은 혼합에 사용된 각 용액의 특성값의 합으로 정의한다. 이 연구소에서는 같은 양의 두 용액을 혼합하여 특성값이 0에 가장 가까운 용액을 만들려고 한다. 예를 들어, 주어진 용액들의 특성값이 [-2, 4, -99, -1, 98]인 경우에는 특성값이 -99인 용액과 특성값이 98인 용액을 혼합하면 특성값이 -1인 용액을 만들 수 있고, 이 용액.. 2024. 3. 22.
컴구 3주차 비트, 바이트 킬로 - 메가 - 기가 - 테라ㅣ 워드- cpu가 한번에 처리 가능한 데이터 크기 하프워드 - 절반, 풀워드 - 1배, 더블 2 이진수 0b1001 = 1001(2) = 9 이진수 음수 표현 -> 뒤집고 +1 16진수 0x15 = 15(16) 2-> 16 변환 오른쪽부터! 4자리씩 묶어서 이어붙이기 1101 0101 -> D5 011 1101 0101 를 16진수로 변환하면 3D5 16 -> 2 변환 D5 를 자리수마다 4비트 이진수로 변환 D = 1101 , 5 = 0101 해서 이진수로는 1101 0101 2024. 3. 22.
자바프로그래밍 3주차 강제 타입변환 long + float 타입일때 long을 (int)로 강제 형변환하고 + float하면 int + float로 처리되서 값은 float로 나온다 (char)0x12340041 -> 강제 타입 결과 0x41이 되고 10진수로 바꾸면 65 가 되서 'A'를 리턴 16진수 - 2진수 변환하기 각 자리수마다 4자리 2진수로 변환 0x55ff 은 0101 0101 1111 1111 이다 대입연산자 우선순위 오른쪽부터 a= 5 a= b = 10 하면 a,b 둘다 1- 2024. 3. 21.
2295 세수의 합(set, 누적합) 문제 N(5 ≤ N ≤ 1,000)개의 자연수들로 이루어진 집합 U가 있다. 이 중에서 적당히 세 수를 골랐을 때, 그 세 수의 합 d도 U안에 포함되는 경우가 있을 수 있다. 이러한 경우들 중에서, 가장 큰 d를 찾으라. 예를 들어 {2, 3, 5, 10, 18}와 같은 집합이 있다고 하자. 2+3+5 = 10이 되고, 이 수는 집합에 포함된다. 하지만 3+5+10 = 18이 되고, 이 경우가 세 수의 합이 가장 커지는 경우이다. 입력 첫째 줄에 자연수 N이 주어진다. 다음 N개의 줄에 차례로 U의 원소가 하나씩 주어진다. 주어진 U는 집합이 되므로 입력되는 두 수가 같아서는 안 된다. U의 원소는 200,000,000보다 작거나 같은 자연수이다. 답이 항상 존재하는 경우만 입력으로 주어진다. 출력 우.. 2024. 3. 21.
빈 관련 어노테이션 @component - 특정 클래스에 빈 생성하는 어노테이션, 아래 어노테이션들은 좀 더 구체적인 어노테이션이다 클래스에 용도에 맞게 사용하는 구체적인 어노테이션 @Service - 비즈니스 클래스 @Controller - 컨트롤러에 사용 @Repository - 데이터베이스와 통신하는 클래스 @Configuration은 클래스가 @Bean 메서드를 하나 이상 선언함을 나타낸다. @Configuration은 자바 설정 파일을 만드는데 사용한다 @Configuration 이 있는 클래스에 @Bean 메서드를 정의하면 메서드에서 반환되는 모든 값에 스프링이 빈을 생성한다 @ComponentScan은 컴포넌트를 스캔할 패키지를 정의하고 @Component가 붙은 클래스를 스프링 빈으로 만든다 2024. 3. 20.
PostConstruct, PreDestroy @PostConstruct - 의존성 주입이 이루어진 후 실행되는 메서드에 사용, db에서 데이터 불러올때 등에 사용 @PreDestroy - 빈이 삭제되기 전에 사용, 종료 전에 데이터 저장할 때 등에 사용 package udemy.learnspring.singleton; import jakarta.annotation.PostConstruct; import jakarta.annotation.PreDestroy; import org.springframework.beans.factory.config.ConfigurableBeanFactory; import org.springframework.context.annotation.*; import org.springframework.stereotype.Compo.. 2024. 3. 20.
싱글톤, 프로토타입 • 자바 싱글톤과 스프링 싱글톤 차이 스프링 싱글톤은 스프링 IoC 컨테이너당 객체 인스턴스가 하나 자바 싱글톤은 JVM당 인스턴스가 하나 • 싱글톤과 프로토타입 차이 기본적으로 스프링에서 생성되는 빈들은 싱글톤이다 빈을 여러번 호출해도 같은 인스턴스를 가져온다 @Scope(value = ConfigurableBeanFactory.SCOPE_PROTOTYPE) 빈 위에 이렇게 Scope 어노테이션을 붙이면 프로토타입 객체로 생성되어서 빈을 가져올때마다 다른 인스턴스를 가져온다 @Component class NormalClass{ } @Component @Scope(value = ConfigurableBeanFactory.SCOPE_PROTOTYPE) class PrototypeClass{ } @Confi.. 2024. 3. 20.
지연 초기화, 즉시 초기화 스프링의 기본 초기화는 즉시 초기화지만 어노테이션을 이용해서 초기화 시간을 조정할 수 있다 지연초기화를 쓸 일이 거의 없다고는 하지만 알아놓자 @Component class classA{ public classA(){ System.out.println("class a!"); } } @Component class classB{ private classA classA; public classB(classA classA){ System.out.println("some logic"); this.classA = classA; } } @Configuration @ComponentScan public class LazyInitializtion { public static void main(String[] args) .. 2024. 3. 20.
백준 14425 이분탐색, set 문제 총 N개의 문자열로 이루어진 집합 S가 주어진다. 입력으로 주어지는 M개의 문자열 중에서 집합 S에 포함되어 있는 것이 총 몇 개인지 구하는 프로그램을 작성하시오. 입력 첫째 줄에 문자열의 개수 N과 M (1 ≤ N ≤ 10,000, 1 ≤ M ≤ 10,000)이 주어진다. 다음 N개의 줄에는 집합 S에 포함되어 있는 문자열들이 주어진다. 다음 M개의 줄에는 검사해야 하는 문자열들이 주어진다. 입력으로 주어지는 문자열은 알파벳 소문자로만 이루어져 있으며, 길이는 500을 넘지 않는다. 집합 S에 같은 문자열이 여러 번 주어지는 경우는 없다. 출력 첫째 줄에 M개의 문자열 중에 총 몇 개가 집합 S에 포함되어 있는지 출력한다. 예제 입력 1 복사 5 11 baekjoononlinejudge start.. 2024. 3. 20.
백준 1920 (이진탐색, set) 문제 N개의 정수 A[1], A[2], …, A[N]이 주어져 있을 때, 이 안에 X라는 정수가 존재하는지 알아내는 프로그램을 작성하시오. 입력 첫째 줄에 자연수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 N개의 정수 A[1], A[2], …, A[N]이 주어진다. 다음 줄에는 M(1 ≤ M ≤ 100,000)이 주어진다. 다음 줄에는 M개의 수들이 주어지는데, 이 수들이 A안에 존재하는지 알아내면 된다. 모든 정수의 범위는 -231 보다 크거나 같고 231보다 작다. 출력 M개의 줄에 답을 출력한다. 존재하면 1을, 존재하지 않으면 0을 출력한다. 예제 입력 1 복사 5 4 1 5 2 3 5 1 3 7 9 5 예제 출력 1 복사 1 1 0 0 1 set을 이용하면 입력을 set에 담고 .. 2024. 3. 18.
백준 19951 (누적합) 문제 2020년 5월 14일 논산훈련소에 입대한 태상이는 첫 총기 훈련에서 가스 조절기를 잃어버리는 중대한 실수를 범했다. 그로 인해, 태상이는 조교들에게 눈총을 받게 되었다. 조교들은 태상이에게 연병장(운동장)의 흙을 옮기는 일을 주고 제대로 수행하지 못하면 징계를 내리려고 한다. 연병장은 일렬로 이어진 N개의 칸으로 이루어져 있으며 각 칸마다 높이를 가지고 있고, 첫 번째 칸부터 순서대로 1번, 2번, 3번, ..., N번 칸으로 명칭이 붙어있다. 조교들은 총 M명이 있으며, 각 조교들은 태상이에게 a번 칸부터 b번 칸까지 높이 k만큼 흙을 덮거나 파내라고 지시한다. 흙은 주변 산에서 얼마든지 구할 수 있으므로 절대로 부족하지 않다. 태상이는 각 조교의 지시를 각각 수행하면, 다른 조교의 지시로 흙을.. 2024. 3. 17.
정처기 데베과목 3 create table patient( id char(5) primary key, name char(10), sex char(1), phone char(20), constraint sex_ck check(sex in('f','m')), constraint id_fk foreign key(id) references doctor(doc_id) ); 4 create table Instructor( id char(5) primary key, name char(15) not null, dept char(15) references Department(dept) on delete set null on update cascade ); 5 속성 추가 alter table patient add job char(20);.. 2024. 3. 12.
백준 18870 좌표압축 문제 수직선 위에 N개의 좌표 X1, X2, ..., XN이 있다. 이 좌표에 좌표 압축을 적용하려고 한다. Xi를 좌표 압축한 결과 X'i의 값은 Xi > Xj를 만족하는 서로 다른 좌표 Xj의 개수와 같아야 한다. X1, X2, ..., XN에 좌표 압축을 적용한 결과 X'1, X'2, ..., X'N를 출력해보자. 입력 첫째 줄에 N이 주어진다. 둘째 줄에는 공백 한 칸으로 구분된 X1, X2, ..., XN이 주어진다. 출력 첫째 줄에 X'1, X'2, ..., X'N을 공백 한 칸으로 구분해서 출력한다. 제한 1 ≤ N ≤ 1,000,000 -109 ≤ Xi ≤ 109 예제 입력 1 복사 5 2 4 -10 4 -9 예제 출력 1 복사 2 3 0 3 1 예제 입력 2 복사 6 1000 999 10.. 2024. 3. 12.
백준 2910 : LinkedHashMap LinkedHashMap은 HashMap + 삽입순서 유지를 해준다! 문제 위대한 해커 창영이는 모든 암호를 깨는 방법을 발견했다. 그 방법은 빈도를 조사하는 것이다. 창영이는 말할 수 없는 방법을 이용해서 현우가 강산이에게 보내는 메시지를 획득했다. 이 메시지는 숫자 N개로 이루어진 수열이고, 숫자는 모두 C보다 작거나 같다. 창영이는 이 숫자를 자주 등장하는 빈도순대로 정렬하려고 한다. 만약, 수열의 두 수 X와 Y가 있을 때, X가 Y보다 수열에서 많이 등장하는 경우에는 X가 Y보다 앞에 있어야 한다. 만약, 등장하는 횟수가 같다면, 먼저 나온 것이 앞에 있어야 한다. 이렇게 정렬하는 방법을 빈도 정렬이라고 한다. 수열이 주어졌을 때, 빈도 정렬을 하는 프로그램을 작성하시오. 입력 첫째 줄에 메시지.. 2024. 3. 11.
백준 1302 (map) map - key, value 쌍으로 이루어진 자료구조 Map titles = new HashMap(); for (int i = 0; i maxCount || (title.getValue() == maxCount && title.getKey().compareTo(maxTitle) < 0)) { maxTitle = title.get.. 2024. 3. 10.
7785 회사에 있는 사람 문제 상근이는 세계적인 소프트웨어 회사 기글에서 일한다. 이 회사의 가장 큰 특징은 자유로운 출퇴근 시간이다. 따라서, 직원들은 반드시 9시부터 6시까지 회사에 있지 않아도 된다. 각 직원은 자기가 원할 때 출근할 수 있고, 아무때나 퇴근할 수 있다. 상근이는 모든 사람의 출입카드 시스템의 로그를 가지고 있다. 이 로그는 어떤 사람이 회사에 들어왔는지, 나갔는지가 기록되어져 있다. 로그가 주어졌을 때, 현재 회사에 있는 모든 사람을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 로그에 기록된 출입 기록의 수 n이 주어진다. (2 ≤ n ≤ 106) 다음 n개의 줄에는 출입 기록이 순서대로 주어지며, 각 사람의 이름이 주어지고 "enter"나 "leave"가 주어진다. "enter"인 경우는 출근, "le.. 2024. 3. 8.
1181 단어정렬 시간 제한메모리 제한제출정답맞힌 사람정답 비율 2 초 256 MB 177833 74687 55975 40.420% 문제 알파벳 소문자로 이루어진 N개의 단어가 들어오면 아래와 같은 조건에 따라 정렬하는 프로그램을 작성하시오. 길이가 짧은 것부터 길이가 같으면 사전 순으로 단, 중복된 단어는 하나만 남기고 제거해야 한다. 입력 첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다. 출력 조건에 따라 정렬하여 단어들을 출력한다. 예제 입력 1 복사 13 but i wont hesitate no more no more it cannot wait im yours .. 2024. 3. 7.
자바프로그래밍 1주차 자바 소스 -> 컴파일러 -> .class 바이트코드 -> jvm(메인 .class만 넣음) 형태로 실행 자바는 컴파일 과정만 거치고 실행이 된다 jdk,jre jre - jvm이 있는 실행환경 jdk - 자바 개발 환경 2024. 3. 7.
스프링 용어 정리 @Component 어노테이션 컴포넌트를 스캔할때 @Component가 붙은 클래스는 인스턴스가 생성되서 스프링이 관리하는 스프링 빈이 된다 컴포넌트 스캔 - @ComponentScan 어노테이션으로 특정 패키지의 컴포넌트를 가져온다 의존성 주입 - 빈을 식별하고 와이어링 하는 과정 빈의 생명 주기와 의존성을 스프링이 관리하는 IoC가 일어난다 오토와이어링 - 스프링의 특정 빈의 의존성 주입을 자동으로 해주는 과정 @Component와 @Bean 어노테이션 컴포넌트는 클래스 맨 위에 추가해주면 된다, 빈은 스프링 configurarion 클래스의 특정 메서드에 개발자가 작성해서 사용한다 일반적으로는 컴포넌트 어노테이션을 사용하지만 비즈니스 로직이 많거나, 시큐리티등 다른 라이브러리에 대한 빈이라면 빈 어.. 2024. 2. 25.
의존성 주입 의존성 주입의 유형 3가지 생성자 기반, 수정자 기반, 필드 기반이 있다 @Component class YourBusinessClass{ } @Component class Dependency1{ } @Component class Dependency2{ } @Configuration @ComponentScan public class DepInjectionLauncherApplication { public static void main(String[] args) { try (var context = new AnnotationConfigApplicationContext (DepInjectionLauncherApplication.class)) { Arrays.stream(context.getBeanDefinit.. 2024. 2. 24.
사용자 정의 정렬 Comparable class Student implements Comparable{ String name; int age; @Override public int compareTo(Student o) { if (age == o.age){ return o.name.compareTo(name); } return age - o.age; } } 나이가 같으면 이름을 내림차순으로 정렬 나이가 다르면 나이 순으로 오름차순 정렬하는 코드 클래스에 Comparable 인터페이스를 구현해서 compareTo 메서드에서 양수 - 오름차순 음수 - 내림차순으로 정렬된다 Arrays.sort(배열이름, new Comparator() 형태로 compare 메서드를 만드는 방법도 있음 2024. 2. 20.
Configuration , Bean, 컨테이너, 빈 연결 우선순위 @Configuration 어노테이션이 붙으면 스프링 설정 파일로 사용 가능하다 설정 파일안에 @Bean으로 의존성 주입한 객체를 넣어두고 컨텍스트에서 꺼내서 가져올 수 있었다 // 스프링 프레임워크를 시작해서 빈을 관리하게 만들기 AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(HelloWorldConfiguration.class); // 컨텍스트에서 객체 가져오기 - bean 어노테이션 System.out.println(context.getBean("name")); System.out.println(context.getBean("age")); System.out.println(context.getBe.. 2024. 2. 19.
백준 2817 문제 전대프연(전국 대학생 프로그래밍 대회 동아리 연합)에서는 매년 프로그래밍 대회를 연다. 올해도 무사히 대회를 개최한 전대프연 회장 성진은 수고해준 스태프들에게 수고비를 주기로 하였다. 하지만 몇몇 스태프는 일을 열심히하지 않았기 때문에 성진은 일을 열심히 한 사람에게만 주기로했다. 하지만 일을 무진장 열심히 한 사람과 덜 열심히 한 사람에게 수고비를 똑같이 주는 것은 불공평하다. 고민을 한 성진은 수고비를 받을 사람을 선출하는 방식으로 ALPS(Allegro Leader Picking System) 을 사용하기로 결심했다. ALPS는 이름에서 보이듯이, 아주 유쾌하고 빠르게 사람들을 선별하는 방법이다. 우선 대회 참가자들은 "수고비를 받을 가치가 있는 스태프" 한 명을 선택해 투표를 한다. (참가자.. 2024. 2. 16.