본문 바로가기

반응형

Programming

(46)
자바 jdk 설치하는법 https://dzzienki.tistory.com/3 1. 개발환경 세팅(1) 자바 설치 및 환경변수 설정 1. https://www.oracle.com/kr/index.html 오라클 홈페이지 접속 > 다운로드 탭 2. 카테고리별 다운로드의 JAVA 탭 선택 3. .Java 탭의 Java (JDK) for Developers 선택 4. Java SE 8u191 / Java SE 8u192 탭의.. dzzienki.tistory.com
[C/C++] assert 란 백준 알고리즘을 풀다보니 이런 말이 있었다. ​ "이렇게 했더니 맞고 이렇게 했더니 틀린다"가 아니라 assert문으로 확실하게 확인해 주시기 바랍니다. ​ 문제를 풀다보면 테스트케이스에서는 다 맞는데 막상 제출하면 틀리는 경우가 있다. 이 경우 문제에 오류가 있나 라고 생각하기 쉬운데 사실 문제에 오류가 있는것이 아니라 내 코드가 test case에서만 통과되는거지 다른 숨겨진 case에 대해서는 실패하는 경우이다. 즉, 내 소스에 디버깅이 확실히 되어있지 않다는 점이다. ​ 확실하게 디버깅하기 위해서는 assert문으로 확실하게 확인해 달라고 하였는데 과연 assert가 무엇일까? ​ assert란 개발자들이 디버깅을 빠르게 하기위한 도구이다. 즉, 에러 검출용 코드이지 코드를 다 완성하고 동작할때 ..
백준 구슬탈출2 https://www.acmicpc.net/problem/13460 ​ 최단경로를 찾는 문제는 BFS로 구현해야한다. ​ 그런데 이 문제에서 BFS로 구현하면서 각각의 노드에 대해서 기억해야 하는 정보가 많아서 난항을 겪었다. ​ BFS를 큐를 이용해서 구현하려고 했기 때문인데 생각해보니 큐에 기본 자료형을 넣을 생각만 하고 있었기 때문이다. ​ BFS에 쓰는 큐에 들어가는 자료형을 구조체로 직접 선언하여 필요한 정보를 각각의 노드마다 전부 저장하였다. 다음과 같이 저장했다. BFS를 구현하는데 있어서 자기 마음껏, 재량껏 소스를 구현함에 따라 구현이 가능할 수도 있고 못할 수도 있었다. 전체 해답 소스는 다음과 같다. #include #include #define LEFT 0 #define DOWN 1..
백준 나무자르기 https://www.acmicpc.net/problem/2110 나무자르기 문제이고 난이도는 Silver 3 이다. 보자마자 풀이가 생각날 정도로 쉬운 문제라고 생각했는데 왜 이게 silver 3 이나 되는지 의아했다. 그러나 보기좋게 fail... 문제를 다시 보니 정답률이 25%밖에 안되는 문제다. 나처럼 쉽게보고 덤볐다가 틀리는 사람이 많은가보다. 정답률이 낮다는건 모든 반례에 대해서 제대로 확인하는게 관건인 문제라고 볼 수 있다. 물론 소스코드를 오차 없이 설계하는것도 중요하다. 2110번: 공유기 설치 첫째 줄에 집의 개수 N (2 ≤ N ≤ 200,000)과 공유기의 개수 C (2 ≤ C ≤ N)이 하나 이상의 빈 칸을 사이에 두고 주어진다. 둘째 줄부터 N개의 줄에는 집의 좌표를 나타내는 ..
백준 공유기설치 https://www.acmicpc.net/problem/2110 백준 공유기설치 문제이다. 이진탐색 문제인데 꽤나 신박한 문제였다. 문제를 본 순간 드는 생각은 공유기를 하나하나씩 둬 보면서 경우의 수를 따져보는 것이었다. 다시 말해서 완전탐색으로 풀 수 있는 문제지만 역시 백준문제답게 시간제한이 있으므로 완전탐색보다 빠른 이진탐색을 이용하면 풀 수 있을거라 생각했다. 공유기설치하는 집 사이의 최소거리를 이진탐색으로 찾는것을 생각하는 것이 꽤나 어려웠다. 해결 알고리즘 1. 이진탐색으로 nCurDst를 설정한다. 2. 설정한 nCurDst로 공유기를 다 설치할 수 있는지 확인한다. (CheckDistance()) 3. 공유기를 설치할 수 있으면 더 큰 nCurDst로 다시 탐색하고 해당 nCurDst를..
백준 유진수 Bronze1 문제. 자기전에 머리 식힐겸 풀어보는 문제로 적당하다. #include using namespace std; int main() { int N = 0; int parsing[11]; int input; cin >> input; if (input < 10)//한자리수 { cout 0) { parsing[N] = input % 10; input /= 10; N++; } // 하나하나 따져보면서 유진수인지 확인 for (int i = 0; i < N - 1; i++) { int left = 1, right = 1; //왼쪽 곱 for (int j = 0; j

반응형