의존객체 자동 주입
1. 의존객체 자동 주입 1.1 의존객체 자동 주입이란? => 태그를 사용하지 않고, 자동으로 의존 대상 객체가 필요한 객체에 주입해 주는 기능. 1.2 @Autowired =객체의 타입을 보고 자동으로 주입함 - Java 파일..
키자드에 등록된 총 191개의 포스트를 확인하실 수 있습니다.
1. 의존객체 자동 주입 1.1 의존객체 자동 주입이란? => 태그를 사용하지 않고, 자동으로 의존 대상 객체가 필요한 객체에 주입해 주는 기능. 1.2 @Autowired =객체의 타입을 보고 자동으로 주입함 - Java 파일..
의존객체 선택 -동일한 Bean 객체가 여러개가 있을 때, 어떠한 객체가 들어갈지 선택을 할 수 있음 1-1. 의존객체 선택 =>동일한 객체가 2개 이상이기에 스프링 컨테이너가 대상 객체를 판단 못하는 경우임 =>wor..
생명주기(Life Cycle) 1. 스프링 컨테이너 생명주기 => 컨테이너가 생성되며, 빈(Bean) 객체가 생성됨 => 메모리에 스프링 컨테이너 생성됨 => 컨테이너의 생성시점 = 빈(Bean) 객체의 생성시점 => close()를..
어노테이션을 이용한 스프링 설정 - 1 1. XML 파일을 Java파일로 변경하기 => XML이 아닌 Java 파일로 객체 생성하기 using 어노테이션 -@configuration 사용 -public <반환형 > { return new 반환형() } - 위의..
=>실제로 입력받은 갯수로 1로 이루어진 숫자로 최대 공약수를 만들면 안된다. =>입력 받은 값의 최대 공약수를 구한 다음 그 값을 limit으로 1을 출력하면 된다. #include #include #include #include #include..
=>string을 입력받은 후에 만들어놓은 배열에 하나씩 추가해준다. =>아스키코드를 통해 index를 접근하면 된다. #include #include #include #include #include using namespace std; int main() { ios_base::syn..
• 'A'=>65 • 'a'=>97 • 0은아스키코드로는NULL을나타낸다. • 숫자가저장되어있는데,출력만글자로해주는것으로이해하면편하다.
=> string을 분석하면 되는 문제이다. => string의 길이가 0일때의 예외처리를 해주지 않으면 틀렸다고 한다. 이 부분을 유의해서 풀어야한다. #include #include using namespace std; int main() { ios_base::s..
=> 공백이 포함된 문자열을 입력받아 각 문자마다 아스키코드로 13을 더해주면 된다. => 소문자와 대문자의 범위를 벗어날 때의 예외처리를 해주어야한다. => 본인은 소문자의 아스키코드를 int형으로 받아 따로..
=> stoll 함수를 사용할 줄 아는지 묻는 문제이다. #include #include using namespace std; long long merge(long num1, long num2) { string t1 =to_string(num1) + to_string(num2); long long val = stoll(t1..
=> substr 함수의 사용을 할줄 아는지 묻는 문제이다. => string이 들어가 있는 배열 역시 sort함수를 통해 정렬 할 수 있다. (연산자 재정의 no need) => for문을 쓸 경우 length()같은 함수를 for문에 쓸 경우..
=> GCD와 LCM ( 최대공약수와 최소공배수 ) 를 구할 수 있는지에 대한 문제이다. => 함수 두개를 생성하여 만들었다. => GCD : 유클리드 호제법 LCM :gcd*(A/gcd)*(B/gcd) 이다. #include #include #include #inc..
=>에라토스테네스의 체를 사용할 줄 아는지를 묻는 문제이다. =>j를 검색할 때 I*I부터 시작하니 자료형을 int를 써야하는 지, long을 써야하는지 long long을 써야하는지 정확히 봐야한다. =>위의 문제에서 2번..
=> 어떠한 수의 0의 갯수를 세기 위해서는 소인수 분해를 한 후에 2와 5의 갯수를 센후 적은 수를 구하면 된다. => 이번 입력 값은 20억개이므로 브루트포스로 2와 5의 갯수를 세어보면 TLE가 발생한다. =>그러한..
#include using namespace std; int main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); int sum=0; int tmp; for(int i=0; i< 5; i++) { cin>>tmp; if(tmp
=> 유클리드 호제법으로 최대공약수를 구할 수 있는 지에 대한 문제이다. => 유클리드 호제법 코드는 아래와 같다. int GCD (int A, int B) //function that find GCD { while(B!=0) { int tmp=B; B=A%B; A=tmp;..
=>string을 cin으로 받을 경우 buffer에 값이 남으므로 getline함수를 사용해 입력받았다. => cin.clear(); cin.ignore(256, '\n'); 위의 두가지 함수를 사용하여 buffer를 지우고 getline을 실행하였다. => 우선..
=>stack을 이용해 '('를 만나는 경우 push를 하고 ')'를 만나는 경우 pop을 하였다. =>괄호가 끝날 때 까지 해당 작업을 다 한 이후에 stack이 비어있으면 완전한 괄호(YES)이고, stack이 비어있지 않으면 불완전..
크게 두가지 경우를 나눈다. 1.stack이 빈 경우 2.stack이 비지 않은 경우 1.1 stack에 오름차순의 수를 넣어주고 answer에 +를 추가한다. 2.1 stack의 top == arr[index] ->stack pop ->answer에 -추가 2.2 stac..
stack을 사용하여 풀 수 있는 문제이다. stack 두 개를 사용하여 커서를 표현 할 수 있다. 커서는 언제나 leftStack과 rightStack 사이에 있다. L : leftStack.top을 rightStack으로 옮긴다. D: rightStack.top을..
queue를 사용하여 풀 수 있다. 원하는 n번째가 나올때까지 pop, push를 이어가다 원하는 숫자가 나오면 프린트하고 pop을 하는 방식을 취하면 된다. 본인은 해당하는 값들을 vector에 넣어 print하였다. #include..
단어 뒤집기 1을 푼 방식대로 풀면 된다. 다른 점은 tag를 생각하고 풀어야한다는 점이다. 거꾸로 print하고 싶은 문자는 stack에 쌓은 후 차레대로 pop하면서 풀면 거꾸로 출력할 수 있다. 이 때 빈칸이 나오면..
stack을 사용하여 풀 수 있다. -> ' ( '를 만나면 stack에 해당 index를 push한다. -> ' ) '를 만나면 stack의 top과 ' ) '를 가리키는 인덱스의 크기가 1이면 레이저이므로 stack의 사이즈를 answer에 더한다. -..
=>이해하는데 오래 걸린 문제이다. =>stack을 사용하여 푸는 문제이다. =>stack에 들어가는 숫자는 현재 오큰수를 찾지 못한 수의 idnex이다. =>현재 index에 들어있는 값이 stack의 top index에 해당하는 값보다..
#include #include #include #include #include using namespace std; int main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); int Burger[3]; int Drink[2]; int MinB=2001; int..
=> 피연산자들은 stack에 차례로 쌓은 후, 연산자를 만나면 해당 연산 작업을 한 후 다시 스택에 쌓는다. => 여기서 주의해야할 점은 stack top 아래 +-*/(연산자) stack top 순서라는 것을 간과해서는 안된다. =..
후위표기식2 와 달리 계산하는 것이 아닌 중위표기식을 후위표기식으로 바꾸는 방법이다. =>연산자를 stack에 넣는 것으로 한다. => ( 여는 괄호가 나오면 여는 괄호를 무조건 stack에 쌓는다. => ) 닫는 괄호가..
=> case 문으로 단순히 더하면 되는 문제이다. // // main.cpp // Baekjoon // // Created by 이준후 // Copyright 2020 이준후. All rights reserved. // #include #include #include #include #include usin..
1.JAVA를 인터넷을 통하여 다운받습니다. 2.Tomcat을 설치합니다.(서버) 저는 8.5.50 버전을 설치 받은 후 서버를 돌려 보았습니다. 3. 인터넷에서 Eclpise를 설치합니다. -저는 네어버의 부스트코스를 보며..
fibonacci는 재귀로 풀어야한다는 것을 알아야한다. //0 : fibonacci(n-1) //1 : fibonacci(n) //fibonacci : fibonacci(n-1) + fibonacci(n-2) 0과 1의 개수는 위와 같은 식을 따른다. 위의 식을 따라 알고리즘..
이제까지는 for문으로 피보나치를 구현하였다. 이럴 때의 문제는 숫자가 커질수록 걸리는 시간이 기하학적으로 커지는 것이다. 이럴 때 해결 방법은 재귀의 방법이다. 재귀를 통한 방법을 알고리즘으로 구현하여..
dp임을 알고서도 푸는데 많이 헤멘 문제였다. dp[자릿수] [들어갈 수 있는 숫자] = 가능한 경우의 수 로 잡고 bottom up의 방법으로 풀었다. *알고리즘 1. 처음자리의 숫자는 1~9까지만 들어갈 수 있으므로 1개의..
숫자 중 5가 들어있는 수를 6으로 바꾸는 함수와 숫자 중 6이 들어있는 수롤 5로 바꾸는 함수를 생성하여 최소합과 최대합을 생성하였다. #include #include using namespace std; long FiveToSix(long num) { lo..
<코드> #include #include using namespace std; int main() { int Kook, Sae=0; int j,s,k,y; cin>>j>>s>>k>>y; Kook=j+k+s+y; cin>>j>>s>>k>>y; Sae=j+k+s+y; if(Kook>=Sae)cout<
피보나치를 재귀로 표현할 줄 알면 간단히 풀 수 있는 문제이다. #include using namespace std; long long fibo[91]={0}; long long fibonacci(int n) { if(fibo[n]!=0)return fibo[n]; else if(n==0) { return..
for문을 통해 풀 수 있는 문제이다. 배열의 크기를 동적할당 할 수 있지만 본인은 302*302로 미리 지정하고 사용하였다. <코드> #include using namespace std; int main() { int arr[302][302]; int M, N; cin>>..
pair와 vector를 사용하여 풀수 있다. 더불어 sort함수를 사용하면 간단하게 풀 수 있다. #include #include #include #include using namespace std; int main() { ios_base::sync_with_stdio(false); cin.tie(n..
-10진수의 숫자를 실제로 12진수와 16진수로 표현할 필요는 없다. 각 자리 숫자를 얻을 때마다 해당 값을 더해가며 값을 구할 수 있다. -3개의 함수를 생성하여 간단하게 풀었다. #include #include #include #in..
#include #include #include #include using namespace std; int main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); int A, B; cin >>A>>B; cout<
#include #include #include #include using namespace std; int main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); int A, B, N; char c; cin>>N; for(int i=0; i >A>>c>>B; co..
x와 y축에서 한번만 나온 숫자를 찾는 함수를 만들어 해결하였다. #include #include #include #include using namespace std; int find(int arr[]) { if(arr[0]==arr[1])return arr[2]; else if(arr[0]==arr[2])..
""를 출력하는 법만 알면 된다. #include int main() { printf("|\\_/|\n"); printf("|q p| /}\n"); printf("( 0 )\"\"\"\\\n"); printf("|\"^\"` |\n"); printf("||_/=\\\\__|\n"); return 0; }
MariaDB : 오픈 소스의 관계형 데이터베이스 관리 시스템(RDBMS) 본인은 윈도우와 AMAZONE EC2 서버에 MariaDB를 설치해보았다. 설치법은 각각 다르지만, 쿼리문들은 똑같으므로 해당글에 적어보겠다. -----------..
C++에 있는 deque STL을 사용하여 풀었다. deque의 개념을 알고있고, STL 사용법만 안다면 쉽게 풀수 있따. 1을 입력받았을때의 예외처리를 깔끔하게 하지 못했다. 다음에 다시 한번 짜봐야겠다. #include #inclu..
list STL을 이용해서 실제적으로 지우면서 문제를 풀었다. 풀고 나서 다른 풀이들을 보니 원형큐를 이용해서 푸는 방법도 있다. 후자의 방법이 더 빠르게 풀수 있는 방법인듯하다. 다시한번 풀어볼 문제이다. #in..
곱하는 수를 10으로 나누면서 곱하고 배열에 넣어 출력하였다. #include using namespace std; int main() { int first, second,second2; cin >> first >> second; second2 = second; int arr[10]; int cnt = 0;..
#include #include using namespace std; int main() { int arr[3]; cin >> arr[0] >> arr[1] >> arr[2]; sort(arr, arr + 3); cout << arr[1]; return 0; }
빼려는 시간이 정해져있기 때문에 간단하다. 0시 0분일때의 경우를 계산해야한다. #include using namespace std; void Calc(int* H, int* M) { if (*M >= 45) { *M = *M - 45; return; } else { int tmp = 45 -..
#include using namespace std; int main() { int N; cin >> N; for (int i = N; i >= 1; i--) { cout << i << '\n'; } return 0; }
배열을 동적생성하여도 되고 vector STL을 사용하여도 상관없다. 본인은 후자의 방법을 사용해서 풀었다. #include #include using namespace std; int main() { int N; cin >> N; vector arr_1, arr_2; for (int..
입력을 받으면서 OX라는 벡터에 결과값을 계산해서 집어넣은 후 마지막에 출력하는 방식으로 하였다. O가 연소갷서 나올경우 더하는 값을 증가하며 sum을 증가시키고, X가 나올경우 tmp2를 초기화 시킨다. #inclu..
배열을 1000개짜리를 만들지 않으면 런타임 에러가 나온다. vector를 사용해서도 할 수 있을 것이다. #include using namespace std; int main() { int N; cin >> N;//number of input double arr[1000];//array..
#include using namespace std; int reverse(int n) { int a, b, c, val; a = n % 10; n /= 10; b = n % 10; n /= 10; c = n % 10; val = a * 100 + b * 10 + c; return val; } int main() { int num, num2; int..
stack 라이브러리를 쓸 줄 아는지에 대한 문제이다. stack에 대한 개념을 알고 있어야한다. 예외처리가 필요 없는 문제라 쉬웠다. #include #include using namespace std; int main() { int num; //입력받을 명..
에라토스테네스의 체를 사용하면 풀 수 있는 문제이다. 기본적인 알고리즘은 쉽게 짰었는데 제대로된 예외처리를 못해서 5번 넘게 틀렸다.... 2, 3, 5등은 소수인데 이 수들까지 소수가 아닌 것으로 인식을 되게..
문제풀이 : 예를 들어 111533400 이라는 숫자가 있다고 하면 뒤에서부터 0이 아닌 숫자가 나올때까지 0의 숫자를 세는 문제이다. 이 경우에 0의 개수는 2개이다. 첫번째 풀이 : 실제로 n!을 계산하여 하려고 하였..
브루트 포스로 검색을 하면서 조건에 맞는 값을 구하면 되는 문제이다. 다른 포스트들을 보니 DFS로 하는 방법 역시 있는데, 공부를 해봐야겠다. #include #include #include #include #define Max_num 3 using n..
가끔은 휴식도 필요하니까... #include using namespace std; int main() { int A, B; cin >> A >> B; cout << A + B << '\n' << A - B << '\n' << A * B << '\n' << A / B << '\n' << A % B; }
정보처리기사 실기 시험은 아래와 같이 나누어집니다. 필기 때와는 달리 각 과목별로 과락은 없습니다. 1. 알고리즘 2. 데이터베이스 3. 업무 프로세스 4. 전산 영어 5. 신기술 동향 1. 알고리즘과 같은 경..
중간고사가 끝나고 처음 푼 간단한 문제이다. 소수의 조건을 만족하는지 아닌지에 대한 함수를 만들어 해결하였다. #include using namespace std; bool Prime_Num(int num) { if (num == 1)return false; else i..
입력값이 0에서부터 12까지밖에 안되므로 재귀로 하지 않고 함수를 선언해서 풀었다. #include using namespace std; int fac(int a) { int result = 1; if (a == 1)return 1; else { for (int i = 2; i <= a; i+..
입력받은 숫자를 하나씩 vector에 넣는 과정이 필요하다. vector를 사용해 간단히 sort하면 되는 문제이다. 아래는 코드이다. 필요한 전처리기 #include #include #include #include #include using namespace st..
백트래킹과 관련된 기초 문제이다. 본인은 백트레킹의 개념은 알지만 코드로 구현함에 있어 어려움을 겪어, 다른 사람들의 코드를 보며 썼다. 길이가 M이므로, cnt가 M이 될때까지 해당 Backtracking 함수를 실행..
배열을 이용해서 오름차순인지, 내림차순인지, 섞여 있는 배열인지 확인하는 문제이다. 본인은 오름차순과 내림차순을 판별하는 함수를 만들고 두 함수 모두 false일 경우, mixed로 판별하였다. 아래와 같은 방법..
함수를 생성해보는 문제다. C++17 환경으로 풀었다. #include long long sum(std::vector &a) { long long ans = 0; for (auto x : a) { ans += x; } return ans; }
10개 크기의 배열을 입력받은 후 다른 값들을 찾기 위해 sorting을 진행하였다. sorting을 한 후에는 같은 값들끼리 모여져 있기 떄문에 다른 값들을 찾기 쉬웠다. 배열[i]번째의 값과 배열 [i+1]번째의 값이 다..
0부터 9까지의 숫자가 몇번 나왔는지 확인하기위해 size 10짜리의 배열을 만든다. A B C 세 숫자를 곱하였을 때 나오는 수의 자릿수들을 하나씩 확인하여야한다. 10으로 나눴을때의 나머지를 구하게 되면 1의 자..
배열 두개를 사용하여 해결하였다. 처음에 입력받은 배열 1개와, sort완료된 배열 1개를 사용해서 최댓값과 최댓값수의 index를 추출하였다. #include #include using namespace std; int main() { int Ori_bae[9..
기본라이브러리에 있는 max와 min 함수를 사용하면 간단히 해결가능한 문제이다. 초기값설정을 max를 -1000000 min을 1000000로 하면 된다. 사실 벡터와 배열을 사용해서 풀려고 하다가 틀려서 더 간단한 방법을..
실행속도를 올리기 위해서 ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); \n 를 사용하여 실행속도를 올릴 수 있다. 대신 ios::sync_with_stdio(false); 같은 경우는 싱글스레드에서만 사용하는 것이..
그림을 그려보면 1의 숫자를 둘러싼 원이 계속 생기는 것을 볼 수 있다. 그 원에 속하는 숫자들까지는 거쳐가야 하는 횟수가 동일하다. 그 원들은 6의 배수로 크기가 커져 간다. 1(방의번호)=>1(거쳐야하는 횟수)..
간단하게 브루트포스로 구하면 되는 문제였다. 자릿수를 세는 과정에서 실수가 있었고, 벡터에 넣는 값을 다른 값을 집어넣는 실수를 하여 코드가 깔끔하지가 않다. #include #include #include using namespace..
단순하게 sort함수를 쓰면 되는 문제이다. 두 문제 모두 같은 코드로 돌아간다. #include #include #include using namespace std; int main() { vector arr; int num; cin >> num; for (int i = 0; i < num; i++..
for문을 이용해 배열을 생성하면 간단하게 할 수 있다. 문제를 잘못이해해 두번이나 틀렸다.......ㅠ #include #include #include using namespace std; int main() { vector arr; for (int i = 1; i <= 1000; i+..
런타임에러가 났었는데 고치다 보니 고쳐졌다.. cout<<" "<<'\n';은 안되고 cout <<" " ; cout << '\n'은 된다. 알 #include #include using namespace std; int main() { int former = 0; int latter = 1; while..
getline과 get에 대해 고민하다가 나누기로 구현할까 하다가 stoi 함수로 구현하였다. 처음에 atoi 함수로 하려고 했는데 string으로 선언해놓고 atoi로 하려는 멍청한 짓을 하고 있었다. 또한 string 선언부와..
while문을 이용해서 처음 입력 받은 숫자가 나올때까지 사이클 횟수를 풀면 되는 문제이다. 처음 입력받은 숫자와 연산뒤에 숫자를 비교하기 위해서 처음에 한번 연산을 한 뒤에 while문으로 들어가게 문제를 풀..
아침에 정신차리려고 푼 문제다 for문만 쓰면 되는 문제다. #include using namespace std; int main() { int num; cin >> num; for (int i = 1; i < 10; i++) { cout << num << " * " << i << " = " << num * i..
오랜만에 푸는 백준 문제라 푸는데 시간이 걸렸다. 점화식 하나만 세우면 쉬는 문제이다. f(n)=f(n-1)+f(n-2)+f(n-3) 위의 식을 사용하면 1,2,3을 이용해 더하는 가지의 수를 더할 수 있다. 본인은 기본적으로 벡..
#include using namespace std; int main() { int n;//n개를 찍을것이다. cin >> n; for (int i = 1; i <= n; i++) { for (int j = 1; j <= n-i+1; j++) { cout << "*"; } cout << endl; } return 0; }
간단한 별찍기 문제였다. 별찍기 1번과는 달리 오른쪽 정렬을 위해 새로운 for문을 정의하였다. n번째 줄에 n개의 별을 찍기 위해서 첫번째 for문에서 전체 n줄-출력할 *의 갯수를 빈칸을 출력한다 그 이후 포문에..
다른 별찍기 문제들과 크게 다를바 없는 문제들이다. 대신 n개의 숫자를 입력받고 점점 *의 개수를 줄어들게 코드를 짜면 된다. *의 개수를 줄어들게 하기 위해서 for문을 작성하였다. j < n-i+1 은 위의 for문이..
처음 풀어보는 문제라 많이 버벅거렸다. 30분이상 생각하다가 답이 안나와 구글링하여 답을 보고 내 방식대로 짜봤다. 참고로 vector로 풀어서 좋을건 하나도 없을 거 같다. 배열로만 풀어도 되는 문제다. answer[..
아침에 일어나자마자 풀어본 문제이다. 친구는 쉽게 푼 문제이지만 나에겐 시간이 필요했다. 우선 등차 수열에 대한 개념을 정확히 하고 가야 했다. 등차수열 : 연속하는 두 항의 차이가 모두 일정한 수열을 뜻..
숫자들의 약수를 구해보면 약수들중 가장 작은수와 가장큰 수를 곱하면 원하는 값을 구할 수 있다. ex) 12: ( 2 3 4 6 ) => 2 *6 =12 위와 같은 방법으로 알고리즘을 짜면 쉽게 구할 수 있는 문제이다. 본인은 배..
char 형으로 입력받아 int 형으로 형변환하여 출력하는 문제이다. #include using namespace std; int main() { char ch=0; cin >> ch; cout << (int)ch; return 0; }
그림을 그려 x축과 y축에 대한 경계선에 대한 최소값을 구하고, 두개의 값을 비교하고 가장 작은 값을 출력한다. #include using namespace std; int main() { int x, y, w, h = 0; cin >> x >> y >> w >> h; int..
테스트 케이스의 개수가 정해져 있지 않아 EOF(End of File)을 알아야했다. 구글링을 해보니, while (scanf("%d %d", &A, &B) != EOF) 형식으로도 표현이 가능했다. #include using namespace std; int main() {..
if문을 통해 입력을 멈추면 간단히 해결가능하다. #include using namespace std; int main() { int a, b = 1; while (1) { cin >> a >> b; if (a == 0 && b == 0) break; else cout << a + b << endl; } return..
수열을 동적으로 생성하기 위해 vector를 사용하였다. 그외는 for문과 if문만 사용하면 쉽게 짤 수 있었다. #include #include #include using namespace std; int main() { int num; int N, X = 0; cin >> N >>..