목록코딩테스트 연습 (5)
ㅁㄴㅇㄹ
단순히 if문을 사용해서 풀었다. 다른사람의 풀이를 보니 정규표현식을 사용해서 굉장히 깔끔하게 해결했던데 좋은 아이디어를 얻었다. 정규표현식을 공부해서 문자열 풀이에 사용하면 좋을것 같다. #include #include #include #include #include #include #include #include #include #include using namespace std; using namespace stdext; int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); const char* s = "123"; string str = s; string ans; for (int i = 0; i < str.size..
별 어려울것 없는 구현 문제였다. vector의 정렬은 algorithm 라이브러리의 sort함수를 사용해 해결하였다. #include #include #include using namespace std; vector solution(vector array, vector commands) { vector ans; for (int i = 0; i < commands.size(); i++) { vector cmd = commands[i]; int start = cmd[0]; int end = cmd[1]; int idx = cmd[2]; vector temp; for (int j = start; j
내가 해결한 방법은 다음과 같다. 1. 각 column의 높이를 담는 배열을 만든다. ( O(N^2) 이긴하나 case가 30 x 30이므로 900번만 계산하면됨 ) 2. 1에서 만든 배열을 바탕으로 board에서 위치를 찾고 stack에다 담는다. 3. moves만큼 반복문을 돌면서 높이는 계속 갱신해주고 stack의 top과 뽑은 인형을 비교해서 stack에 push하거나 pop한다. pop할때는 ans에 2만큼 추가해준다. stack만 알고있다면 알고리즘에 대해 따로 공부하지 않았어도 풀어볼만한 문제같다. 다만 비교적 코드수가 많이나와서 디버깅하는데 애를 꽤 먹었다. 실전에서 풀게된다면 디버깅 기능없는 웹 ide로 풀어야할텐데 생각보다 실전에서 풀기 힘들것 같다. #include #include #..
비교적 간단한 구현문제였는데 주의할점이 있다면 문제에서 손가락은 대각선으로 이동이 불가능하기 때문에 키패드 사이의 거리를 계산할 때 택시기하학의 거리공식을 써야 했었다. https://www.acmicpc.net/problem/305 3053번: 택시 기하학 첫째 줄에는 유클리드 기하학에서 반지름이 R인 원의 넓이를, 둘째 줄에는 택시 기하학에서 반지름이 R인 원의 넓이를 출력한다. 정답과의 오차는 0.0001까지 허용한다. www.acmicpc.net #include #include #include #include #include #include #include using namespace std; // 키패드 배열 char keypad[4][3] = { {'1', '2', '3'}, {'4', '5'..
입출력 속도 빠르게 하는 방법 ios_base :: sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 위의 코드를 main 함수 안에 넣어주면 된다. 백준에서 코딩테스트를 하다가 native한 cin, cout을 썼다가 타임아웃이 난 경험이 있다. cin, cout을 사용하는 사람이라면 꼭 붙여주자. 굳이 cstdio에서 printf, scanf를 사용 안해도 되서 c++로만 풀수 있어서 편리한것 같다.