일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 1182
- 댓글
- Ajax
- 재귀
- 구슬탈출2
- 17144
- 미세먼지 안녕!
- Java
- 연산자 끼워넣기
- 알고리즘
- 장고
- 좋아요
- django
- 인스타
- 백준
- 인스타그램
- 6603
- 부분수열의 합
- 따라하기
- 17136
- 괄호추가하기
- 9095
- 색종이 붙이기
- 로또
- 16637
- 17143
- 14888
- 17472
- 14502
- 다리 만들기2
- Today
- Total
목록sw 역량테스트 (20)
Be a developer
정처기 공부를 한다고 오랜만에 문제를 풀었다. 사실 정처기 하다가 지겨워서 잠깐 풀다가 다음날 또 풀다가, 다시 풀었다. 처음에 뱀을 저장하는 방식으로 vector를 사용했다가 코드가 너무 복잡해져서 다른 방법을 생각해보니 deque가 생각났다. 뱀이 이동할 때 추가되거나 삭제 되는 곳은 머리 혹은 꼬리 뿐이기 때문에 쉽게 front, back을 수정을 할 수 있는 deque을 사용하여 다시 코드를 작성했다. 먼저, 벽을 만나거나 몸을 만나면 종료를 해야 하기 때문에 이를 처리한다. 그리고 다음 칸이 사과면 꼬리는 그대로 두고, 머리만 front에 추가한다. 다음 칸이 사과가 아니라면 머리를 front에 추가하고, 꼬리는 back에서 pop시킨다. 방향만 잘 설정해주고, 방향을 바꾸는 시간대를 따로 ve..
일단 문제가 길어서 좀 잘렸다.. 처음 봤을 때 좀 복잡하겠다 싶었는데, 문제 자체가 어렵다기 보다는 index를 가지고 노는 것이 힘들었던 문제였다. 문제를 읽고 이해가 안되었던 부분도 있었고.. 그래서 힘들었던 것 같다. 결국 index 때문에 정신이 혼란해서 강의를 보고 풀게 되었다.. 1. 먼저 잘못한 것은 경사로를 놓을 수 있는지 check할 때, i와 i+1 두 인덱스를 가지고 검사하려다 보니, 한 칸씩 검사를 하면 되는 것을 두 칸씩 검사하여 코드도 복잡해지고 내 머리속도 복잡해졌다.. 어떤 인덱스를 기준으로 왼쪽으로 더 가거나 오른쪽으로 더 갈 때 i-j, i+j와 같이 푸는 방법을 잘 기억해둬야겠다. 2. 길을 찾기 위해서는 행이든 열이든 한 줄씩만 검사하면 된다. 처음에 그렇게 풀려고 ..
코딩 테스트 치러가기 전에 풀다가 2일 뒤인 오늘 마저 풀게 된 문제이다.. 무슨 정신상태로 했는지 코드가 엉망진창이었다. 시뮬레이션 문제답게 조건만 맞춰주면 되는 문제이다. 다만 신경쓸 것은 방향이 주어지기 때문에 그에 맞춰서 dr, dc 배열을 선언해주면 편하다. 또한 dir을 바꿀 때 % 연산자를 통해서 쉽게 변경하는 것도 쉽게 문제를 푸는 방법이다. 자주 쓰이는 방법인 것 같다. 그리고 scanf로 계속 입력을 받았는데, cin과 cout을 좀 더 쓰도록 노력해야 겠다. 쓰는 방법을 잘 익히고 있어야 될 것 같다. 아래는 코드이다. 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051..
조건도 많지 않고, 문제도 간단하여 풀기 쉬운 문제였다. 재귀 함수를 이용하여 완전 탐색만 진행해 주면 되었다. 선수들을 배열로 놓고, idx를 증가시켜가며 추가하거나 추가하지 않는 경우의 수를 나누면 되었다. 추가한 선수들을 true로 두어서, cal함수에서 이중 for문을 돌며 true인 두 선수의 능력치를 더해주었다. 이어서 false인 두 선수의 능력치를 더하였다. 마지막으로 두 합의 차이를 ans vector에 저정한 후 min_element함수를 통해 출력하면 끝이난다. 코드는 아래와 같다. 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859#incl..
문제가 너무 길어서 짤렸다.. 처음 문제만 읽어 보고 나서 쉬운 문제라고 생각했다. 1시간 안에 끝날 줄 알았는데 2시간 걸렸다.. 너무 안일하게 생각하고, 구체적으로 어떤 프로세스로 돌아가는지 생각하지 않고 코딩하기 시작했다. 앞에서도 같은 실수를 여러번 반복했기 때문에 구체적으로 생각하고 들어가려고 조심하고 있었고, 이번에도 구체적으로 생각했다고 생각했는데, 사실은 구체적이지 않았던 것 같다. 계속 뭐가 잘못됐는지 찾다가 톱니바퀴가 아니라 내가 돌아버리는 것 같았다.(뇌도 돌아버리는 것 같았다.) 계속 알고리즘 문제를 풀다보니 반복하는 부분을 함수로 계속 만들고, 코드도 처음에 비해서 조금씩 군더더기를 걷어내고 있는 중인 것 같긴하다. 하지만 여전히 아쉽고 매우 매우 매우 매우 많이 부족하다. 1. ..
예제가 많아서 조금 짤렸다.. 오랜만에 시간 안에 푼 문제이다. 1시간 40분 정도 걸려서 푼 것 같다. 처음부터 손으로 정리를 하고 풀었더니 문제가 쉬운 건지 모르겠으나 비교적 쉽게 풀었던 것 같다. 1. 오른쪽으로 쭉 감시 방향을 체크하는 함수, 왼쪽, 위, 아래로 감시하는 함수를 각각 만들었다. 처음에는 하나의 dfs 함수에 다 구현하려 했으나 너무 같은 코드가 반복되어 함수로 따로 만들어 주었다. 그랬더니 cctv의 종류에 따라 맞는 함수만 골라 쓰면 되어서 편하게 구현할 수 있었다. 2. 재귀로 구현되기 때문에 종료 조건이 있어야 한다. 선택한 cctv의 개수가 총 cctv의 개수와 일치하면 사각지대의 수를 ans vector에 넣는다.(나중에 최소값을 찾기 위해 사각지대 수를 넣어둔다.) 이 ..
사진은 너무 많아서 일부만 가져왔다.. 오늘도 돌아온 반성의 시간.. 뭘 잘못했는지 알아보자. 1. 나름대로 생각해서 어떻게 풀지 정한다음 코딩을 시작했다. 하지만 그 문제를 푸는 방식부터 잘못되었다. 즉, 생각은 했으나 그 방법으로 풀릴지 검증을 하지 않고 코딩을 시작한 문제이다. 처음에는 각 가로 사다리를 2차원 배열의 한 원소로 잡는 것이 아니라, 세로선과 가로선이 만나는 부분을 한 원소로 잡으려고 했다. 그래서 인접한 두 원소가 true이면 사다리가 있는 것으로 하려 했다. 하지만 이는 오른쪽으로 연속된 두 사다리를 체크할 때 힘들다. 1111과 같은 경우 사다리가 2개 있는 것인데 이를 구분할 방법이 없다. 그래서 생각한 것이 중간에 사다리가 있고 없고를 구분하기 위해서 111000과 같이 두어..
정말 삽질을 많이 해서 배울 것이 많았던 문제이다.. 정답률이 높아서 쉬울 거라고 생각했는데, 첫 접근부터 이상했기 때문에 4시간 동안 생각하고도 풀지 못해서 결국 인터넷에 검색해서 참조했다. 삽질 목록 1. 문제에 대한 접근이 잘 못 되었다. 세대가 증가하면서 그려야 하는 방향이 역 방향으로 가는 구조임(현재 끝점이 3으로 왔고, 바로 앞의 점이 2 방향으로 왔다면, 다음에 그릴 점의 방향은 0이 되고, 그 다음 그릴 점의 방향은 3이 됨.)을 알았다. 하지만 그 전에 그리는 드래곤 커브를 vector에 일일히 저장하는 방식으로 풀려고 하다보니, stack을 사용하려 하지 않고, 어떻게든 만들어 놓은 vector를 사용하여 풀려고 했다. 그러다보니 코드가 복잡해졌고, 멘탈이 나가게 되었다. => 풀다가..