본문 바로가기

CodingTest/BOJ

(27)
[BOJ 1110] 백준 더하기 사이클 - C++ 사용언어 : C++ 문제풀이 (1) 필요한 변수 N(int), count(int), result(int) N : 처음에 입력 받은 이후엔 계속 고정되는 원래의 값 count : 출력에서 요구하는 값 result : N과 비교할 수 있는 일시적인 결과값 int N; int count = 0; cin >> N; int result = N; 이 때, result값은 임의로 N값으로 초기화 해준다. (2) 반복문 구성 (+ result 값 계산) 우선 무한루프를 돌려준다. 적어도 한 번은 계산해줘야 함! (문제 자체가 계산을 몇 번 하는 건지 요구하는 것 + result를 N으로 초기화했기 때문에 당연히 처음엔 result와 N은 같음) result 의 10의 자릿수 : 이전 값의 1자릿수 (26이면 6) =>..
[BOJ 2164] 백준 좌표 압축 풀이 - C++ 사용언어 : C++ 문제풀이 * vector 이용!! (sort, erase, unique, lower_bound) (1) 2개의 vector가 필요하다. original vector, check vector original vector : 순서대로 좌표압축 값을 출력해야함 check vector : 좌표압축 값 계산할 때 사용 vector v(n); for (int i = 0; i > v[i]; } vector check(v); (2) check vector 변형해주기 중복되지 않는, 오름차순으로 정렬해주기. => 오름차순 정렬 후 중복된 값은 뒤로 보내준다. 중복된 값들은 다 지워준다. (중복 시작 된 곳부터 끝까지) sort(check.begin(), check.end..
[BOJ 2164] 백준 카드2 풀이 - C++ 사용언어 : C++ 문제풀이 * queue 이용하기 (1) queue에 1부터 n까지 순서대로 push한다 (2) queue front pop 해준다 (3) queue front를 push해주고, queue front를 pop해준다. (맨 앞에 있는 값 맨 뒤로 보내기) 이 동작을 queue size가 1이 될 때까지 반복 (즉, 1보다 클때까지 while문 돌리기) 전체코드 #include using namespace std; #include int main() { queue q; int n; cin >> n; for (int i = 1; i 1) { q.pop(); q.push(q.front()); q.pop(); } cout
[BOJ 11047] 백준 동전0 풀이 - C++ 사용언어 : C++ 문제풀이 * stack 이용하기! (1) 순서대로 동전 stack에 push하기 (오름차순이라 순서대로 push 가능) (2) stack top이 k보다 작으면 top으로 사용할 수 있을만큼 answer에 더해주고, k를 그만큼 감소시킨다(k를 top으로 나눈 나머지 값). (3) stack pop해준다. 전체코드 #include using namespace std; #include int answer; int main() { int n, k; cin >> n >> k; stack s; int tmp; for (int i = 0; i > tmp; s.push(tmp); } while (k) { if (s.top()
[BOJ 20001] 백준 고무오리 디버깅 풀이 - C++ 사용언어 : C++ 문제풀이 * stack 이용하기! (1) 문자열을 입력받을 땐 getline을 사용한다 ("고무오리 디버깅 끝", "고무오리 디버깅 시작"은 공백을 포함하기 때문) (2) "문제" : stack push 한번. "고무오리" : stack pop 한번 (스택이 비어있으면 push 두번) 전체코드 #include using namespace std; #include #include string str; stack s; int main() { getline(cin, str); while (str!="고무오리 디버깅 끝") { getline(cin, str); if (str == "문제") s.push(1); else if (str == "고무오리") if (s.empty()) { s.pus..
[BOJ 1699] 백준 제곱수의 합 풀이 - C++ 사용언어 : C++ 문제풀이 * dynamic programming 이용하기 자세한 풀이 : https://developing-soosoo.tistory.com/32 [BOJ 17626] 백준 Four Squares 풀이 - C++ 사용언어 : C++ 문제풀이 * dynamic programming 이용하기 * int형 배열인 arr에 값 저장 * 순차적으로 접근 ex) arr[26] arr[1]+arr[25], arr[4]+arr[22], arr[9]+arr[15], arr[16]+arr[10], arr[25]+arr[1.. developing-soosoo.tistory.com 전체코드 #include #include using namespace std; int N; int arr[100001]; in..
[BOJ 17626] 백준 Four Squares 풀이 - C++ 사용언어 : C++ 문제풀이 * dynamic programming 이용하기 * int형 배열인 arr에 값 저장 * 순차적으로 접근 ex) arr[26] arr[1]+arr[25], arr[4]+arr[22], arr[9]+arr[15], arr[16]+arr[10], arr[25]+arr[1] 이 중에서 최솟값이 답이 된다 여기서 arr[1],arr[4]... 즉, arr[i*i] 꼴은 항상 답은 1이다 (제곱수) 따라서, arr[26-i*i] 중에서 가장 작은 값을 가진 배열이 답이 된다 전체코드 #include using namespace std; #include #define INT_MAX 50005 int n; int arr[50000]; int main() { ios::sync_with_st..
[BOJ 17219] 백준 비밀번호 찾기 풀이 - C++ 사용언어 : C++ 문제풀이 * key,value 모두 string인 unordered_map을 이용해 key엔 사이트 주소, value엔 비밀번호를 저장했다. (1) address,password 입력받아 map에 대입하기 unordered_map m; //string은 공백을 기준으로 값을 받는다 cin >> N >> M; for (int i = 0; i > address >> pwd; m[address] = pwd; //index를 이용해 저장 } (2) 찾고자 하는 address를 입력받아 map[address]값 출력하기 for (int i = 0; i > address; cout > M; for (int i = 0; i < N; i+..