| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 | 31 |
- 수학
- 백준
- 다리로봇
- 문자열
- 실버 5
- BOJ
- 집합과 맵
- lqr
- 전국 대학생 수학 경시대회
- 논문리뷰
- 정렬
- HJB방정식
- mathematics for computer science
- 자료구조
- 로봇공학
- mit
- baekjoon problem solving
- baekjoon
- MIT opencourse
- LeggedRobot
- 구현
- 최적제어
- 텔레스코픽로봇
- C++
- 대수경
- std::sort
- 로보틱스
- 6.042j
- 큐
- 실버 4
- Today
- Total
목록BOJ (15)
서두르지 말고 쉬지 말자
solved.ac 티어 : 브론즈 1문제 유형 : 수학, 구현, 브루트포스 알고리즘, 사칙 연산문제 해결 소감 : 문제유형과 출제 의도에 맞게 잘 푼 것 같다.문제 해결 전략 : 문제에서 수식이 제시되어 있어서 해당 수식을 만족할때 까지 빈인덱스값을 변경하는 방법으로 문제를 해결했다.#include #include std::string s;int arr[13];int index = 0;int solve(int *arr, int index);int main() { std::cin >> s; for (int i = 0; i
문재 티어: 실버 4문제 유형: 구현, 자료구조, 큐문제 해결 소감: 그냥 배열써서 풀어도 풀긴했을 거 같은데 큐를 쓰니까 풀이가 더 간단해졌다. 이래서 자료구조를 사용하나 보다. 문제 해결 전략: k번째보다 앞에 있는 값들은 push()한후 pop()으로 없애준다. 그 후 정답으로 제출할 vector에 넣고 큐 안에서 pop한다. 이를 반복한다. #include #include #include int n, k;std::queue q;std::vector ans;int main(void) { std::cin >> n >> k; for (int i = 1; i ';}
solved.ac 티어: 브론즈 2문제 유형 : 구현, 문자열, 해싱문제 배경 지식1. 해싱(Hashing)이란?- 임의의 길이와 형태를 가진 데이터를 고정된 크기의 값(해시값, hash value)으로 변환하는 과정 또는 방법이다. 이때 사용하는 변환 규칙이 해시 함수(hash function)이다.- 해시값이 특정 배열의 인덱스라는 의미를 가지면 이를 해시 주소라고 한다.해시 충돌 : 서로 다른 키가 같은 해시값을 가지는 것으로 반드시 존재하지만 해시 충돌을 줄일수록 좋은 해시 함수이다.어디에 쓸까?1. 빠른 데이터 검색 : O(1)으로 해시 테이블 자료형과 함께 쓰인다.2. 고정된 길이로 변환3. 인덱스 계산 : 1번과 일맥상통한 내용문제 해결 소감 : 문제에서 주어진 해시함수를 그대로 구현하는 ..
solved.ac 티어 : 실버 4문제 유형 : 자료 구조, 스택, 문자열문제 해결 소감 : 스택으로 이걸 어떻게 풀지 몰라서 종만북에 있는 같은 유형 문제의 해결 아이디어를 참고했다. 아이디어를 아니까 바로 풀렸다. 배우는 과정에서 푸는 거니까 생각이 안나면 이렇게 빨리 빨리 넘어가는게 맞는 것 같다.문제 해결 전략 : 스택을 이용해서 풀었다. 먼저 스트링 변수에 문자열을 입력한다. 첫번째 문자열 요소부터 순회를 한다. 순회하면서 요소가 ( 이라면 스택에 넣는다. ) 이라면 괄호가 성립하니까 한번 pop한다 이를 반복해서 스택이 비었으면 YES 아니면 NO를 출력하게 했다. 여기서 한 가지 경우가 더 있는데 스택이 비었는데 )를 읽으면 NO이고 바로 다음 문자열로 넘어가게 하면된다. 스택을 사용하는 이..
solvd.ac 티어 : 실버5문제 유형: 수학문제 해결 방안 : 문제에서 최댓값인 500!은 너무 큰값이라서 일반적인 방법으로는 되지 않는다. 팩토리얼로 만든 값을 소인수분해하면 2가 항상 5보다 많고 10은 2와 5의 곱이다. 따라서 5가 몇번 곱해져 있는지를 세면 된다. 예를 들어 n이 15이면 5의 배수 5 10 15가 곱해져있다 15 = 5 * 3 즉, 15팩토리얼은 5가 곱해져 있는 수 3개가 곱해져 있다. 또한, 25는 5가 두번 곱해져있지만 5로 나누면 5가 1개 있는 수로 카운트 된다. 따라서 5 뿐만 아니라 25 125 625 ...으로도 나눠서 카운트 해줘야 한다.문제 해결 소감 :무식하게 풀려고 해서 못 풀어서 인공지능에 물어봤다. 팩토리얼은 일반적인 반복문을 이용해서는 풀지 못한다..
solved.ac 티어 : 실버4문제 유형 : 자료구조,큐문제 해결 방안 : 큐를 구현해서 큐에 사용되는 일반적인 기능들을 구현하는 문제이다. 큐가 선입선출 자료형이라는 것을 알고 문제에서 요구하는 것을 구현하기만 하면 되는 문제이다. C++은 동적 배열인 vector라이브러리를 사용하면 비교적 쉽게 구현할 수 있다.0.5초라 혹시 몰라 iostream과 stdio 동기화를 끊는 코드를 넣엇 시간을 단축시켰다.문제 해결 소감 : 큐의 개념만 알면 푸는 쉬운 문제였다.#include #include #include int N;std::vector v;std::string str;int x;int main(){ std::ios::sync_with_stdio(false); // 시간 단축용 함수(iotr..
solved.ac 문제 난이도 : 실버 4문제 유형: 자료구조, 해시를 이용한 집합과 맵문제 해결 전략 : 양방향 map을 이용해서 구현했고 시간 단축을 위해 코드를 추가했다. stoi와 isdigit를 이용했다.문제 해결 소감 : map 자료구조가 뭔지 알고 STL(Standard Templete Library)로 구현해 보았다. 처음 이 자료형을 접했다. 지금은 STL을 사용할 수 있는 걸로 만족하지만, 라이브러리가 Red-Black Tree로 이루어져 있다는데 나중에 이게 뭔지 한번 알아봐야 겠다. stoi와 isdigit를 알았다 이런 편리한 함수는 좀 알아두자. #include //포켓몬 마스터 이다솜#include #include int n = 0, m = 0;std::string str;s..
solved.ac 티어 : 실버 5문제 유형 : 비트마스크문제 해결 방안 : 시간이 매우 적게 주어지므로(1.5초) 비트마스크를 이용해 풀어야 한다. 시간을 단축하기 위해 코드 2개를 삽입했다. 문제 해결 소감 : 비트마스크가 뭔지 몰라서 공부하고 풀었다. 새로운 유요한 개념을 알게 됐다. C++에서 시간 단축을 위한 코드를 알게 되었다. #include std::string cmd;int x = 0;int M = 0;unsigned int bit = 0;int main(){ std::ios::sync_with_stdio(false); std::cin.tie(NULL); // 시간 단축용 (stdio와 동기화 끊기& 자동 flush 안하기) std::cin >> M; for (in..
