일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 따라하기
- 다리 만들기2
- 장고
- 댓글
- 16637
- 색종이 붙이기
- 로또
- django
- 구슬탈출2
- 14502
- 연산자 끼워넣기
- 17144
- 1182
- 17143
- 인스타그램
- 17136
- 좋아요
- 17472
- Ajax
- 부분수열의 합
- 인스타
- 괄호추가하기
- Java
- 6603
- 9095
- 백준
- 알고리즘
- 재귀
- 미세먼지 안녕!
- 14888
- Today
- Total
Be a developer
1. 중복체크를 할 때 list에 넣고 contains 메소드로 체크하는 것 보다 HashSet에 그냥 넣는 것이 속도가 훨씬 빠르다. HashSet은 별도의 정렬 작업이 없어서 Set 중에 가장 성능이 좋다고 한다. List는 본질적으로 순서도 같이 관리하기 때문에 시간이 오래 걸린다고 한다. 2. 정수형의 범위를 조심해라.(overflow가 나는 경우를 잘 살펴라) 오버플로우가 발생할 것 같으면 long으로 선언하자. 3. DFS를 돌 때 종료 조건에 return 을 넣는 것을 까먹지 말자! 4. Collections.sort 혹은 Arrays.sort로 String을 정렬할 때 String의 길이는 중요하지 않고, 알파벳 순서로만 정렬이 된다. 길이가 짧은 것이 앞에오게 해서 정렬하려면 Compar..
상반기 삼성 코딩테스트 기출문제이다. 상반기에 단기간에 공부해서 시험치러 갔다가 결국 런타임 에러를 잡지 못하고 와서 멘탈이 나갔었다.. 평생 잊을 수 없는 문제가 될 것 같다. 그 후로 풀고 싶었지만 문제를 보고 싶지 않아서 다른 문제들을 먼저 다 풀었다. 결국 백준에 있는 다른 기출 문제들을 다 푼후에 다시 풀게 되었다. 당시에는 runtime에러를 어떻게 찾아야 할 지 감도 잡지 못했었다. 배열을 참조할 때 인덱스가 벗어났을 것이라 생각해서 1시간이 넘는 시간 동안 이를 찾다가 결국 시간 안에 풀지 못하고 나왔던 아픈 경험이었다. 그리고 다시 c++이 아닌 Java로 풀게 되었다. 문제를 한 번 봤던 탓인지 문제가 어렵지 않았다. 문제를 많이 풀어보면서 굳이 배열이 주어져도 배열에서 움직이는 것이 ..
상반기 코딩 테스트 기출문제이다. 그 때는 미세먼지 문제를 푼다고 읽어보기만 했던 문제였다. 문제 자체는 어렵지 않고, 시간 복잡도를 잘 계산해서 이동 거리를 줄이는 것이 중요한 포인트이다. 상어들을 class로 만들어서 arraylist로 저장한 후 먼저 낚시왕에게 잡히는 것들을 계산한다. 그리고 상어를 이동하는데, 이 때 거리를 줄이는 법을 생각해내야 했다. % 연산자로 가능할 것이라 생각했는데, 2 * (r - 1) or 2 * (c - 1)로 연산해야 됨을 찾아 내었다. 하지만 양 끝에서 시작하는 경우, 예를 들어 왼쪽 끝에서 오른쪽 방향을 보고 있는 상어의 경우 해당 연산만큼 % 연산을 한 후 그 값이 0인 경우에는 방향을 바꿔 준 후 이동해야 했다. 이를 빠르게 찾지 못하고 다른 방법들을 생각..
왜 상반기 기출문제를 풀 때 안풀어 보았는지는 모르겠지만, 기출 문제를 다시 한 번 풀어보는 과정에서 풀게 되었다. 안전한 곳의 수를 세면 되기 때문에, map을 입력 받을 때 그 수를 세어주었다. (2차원 배열을 다 돌면서 세지 않고 이렇게 하는 방법을 다른 문제에서 다뤄본 적이 있었다.) 일단 바이러스는 퍼져나가는 것이기 때문에 BFS로 풀어야 했고, 벽의 위치는 안전한 곳에서 3개를 고르는 조합이었기 때문에 DFS를 통해서 해결했다. 다만, DFS(재귀)를 돌면서 BFS를 돌아야 했기 때문에 시간 복잡도를 계산해보아야 했고, 충분하다는 생각이 들었다.(시뮬레이션 하는 것 말고는 다른 방법이 생각나지 않았다.) Queue를 만들어 바이러스의 위치를 넣어주고, visit를 통해서 BFS를 돌렸다. 다만..
이번 문제를 풀면서 부족했던 점들을 먼저 나열하겠다. 첫 번째, 시간 복잡도를 제대로 계산하지 못했다. 왜냐하면 풀이에 확신이 없었기 때문이다. 주어진 조건 대로 블럭을 옮기면 풀릴 것 같았지만 dfs를 통해서 풀어야 했기 때문에 시간 초과에 대한 확신이 없었다. 그래서 해당 문제 풀이를 시작하기 까지 시간이 오래 걸렸다. 5번 이동이 가능하고 한 번 이동에 4방향이 가능 하므로 4^5가 우선적으로 걸린다고 생각했다. 그리고 20 x 20 배열이므로 400 * 4^5의 시간이 걸린다고 생각했다. 여기 까지는 충분하다고 생각했지만, 여기에 각 블럭을 이동하는 데 걸리는 시간이 곱해진다면 시간 초과가 나지 않을까 하는 생각이 들었고, 좀 더 쉽게 풀어 보려는 생각도 더해졌던 것 같다. 하지만 마땅한 방법이 ..
오랜만에 글을 올리게 되었다. 자바 교육을 받게 되어서 이제 부터는 자바로 풀게 되었다. 조금 힘들게 문제를 풀었다. 저번에 한 번 풀다가 도저히 못 풀것 같아서 다른 분들 코드를 참조했었다. 그러다가 흐지부지 넘어갔었다가 다시 풀게 되었다. 그 때 코드를 조금 봤던 덕분에 어떤식으로 풀어야 할지 대강 감이 오긴 했으나 역시 이번에도 힘겹게 풀었다. 7번? 정도 틀린 후에 질문 게시판에서 여러 테스트 케이스를 넣어 보고 겨우 통과했다. BFS를 이용한 시뮬레이션 문제라고 생각하는데 그 조건들이 꽤나 까다로웠던 것 같다. 그래서 여러가지 경우의 수를 잘 생각하고 풀어야 하는 문제인 것 같다. 먼저, BFS를 이용해도 dr, dc를 이용해서 한 칸 정도씩 이동하는 것은 해보았지만 이 문제처럼 해당 방향으로 ..
당연히 가상 환경을 먼저 실행시켜 준다. 잘못된 디렉토리에서 실행시키려는 친구들이 종종 보이는데, 그럴 때는 ls 명령어를 통해서 myvenv 즉, 가상환경 폴더가 있는 디렉토리에서 진행하고 있는지 먼저 확인하기 바람. 그리고 좋아요와 댓글 버튼이 detail.html에 있기 때문에 blog 앱 폴더 밑에 있는 detail.html을 켜준다. 위의 코드를 detail.html에 endblock 위에 다가 넣어준다. 이는 javascript 기반의 라이브러리인 Jquery를 사용하기 위해 넣어주는 것. 간단히 말하면 Javascript의 기능을 좀 더 편하게 사용할 수 있도록 도와주는 기술인 Jquery를 사용하는 것이다. 그리고 그 바로 밑에 위와 같은 코드를 넣어준다. 코드를 따로 올려줄 수도 있지만,..
개인적인 사정으로 인해서 세션에 직접 가지 못해서 미안하고.. 그래도 뛰어난 우리 민석이, 신웅이, 정수가 잘 해줄거라 생각함.. Ajax 간단하게 설명 하겠음. Ajax란 무엇일까? Ajax는 위에 나와있는 그대로이다. 이니셜을 따서 붙인 이름임. 근데 비동기? XML? 저 각각이 뭘 말하는 걸까? 사실 정확한 정의는 나도 모름.. 하지만 대강 어떠한 건지 개념은 알아둬야 Ajax를 이해할 수 있다! 우리가 지금까지 해온 django 개발은 위와 같이 브라우저와 서버 간에 Data를 주고 받는 과정이었다. VScode를 통해 Django 서버를 개발했고, runserver를 해서 서버를 실행시킨 후 Chrome이라는 브라우저를 켜서 우리 서버에 접속을 했다. 즉, 브라우저와 서버 통신을 했던 것이다. ..