알고리즘
-
알고리즘 문제를 풀 때 가장 좋은 입출력 방법은? (C, C++, Java )Problem Solving/Know-how 2019. 9. 4. 17:06
- C 입력 : scanf 출력 : printf - C++ 입력 : scanf (단 ios_base::sync_with_stdio(false); 와 cin.tie(NULL) 을 사용하면 cin 이 빠르다. 하지만 이럴 경우 stdio의 함수들은 사용할 수 없다) 출력 : printf (단 ios_base::sync_with_stdio(false); 를 사용하고 줄바꿈을 '\n'으로 처리하면 cout이 더 빠르다 물론 이 때도 stdio 함수들은 사용할 수 없다 ) - Java 입력 : BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String s = br.readLine(); 출력 : BufferedWriter bw =..
-
시간복잡도를 표현하자! Big O 표기법Knowledge/Data Structure 2019. 9. 4. 16:42
- 문제의 크기와 조건 알고리즘 문제가 주어졌을 경우 우선 문제의 크기와 조건 고려해야 한다. 예를 들어 '메뉴판에 있는 모든 메뉴를 읽는데 걸리는 시간을 구하라' 라는 문제가 있을 때 메뉴판이 하나뿐이라면 시간은 사람수 N X 메뉴 갯수 M 만큼 걸리겠지만 사람수만큼 메뉴판이 있다고 조건이 바뀌면 메뉴 갯수 M 만큼만 걸릴테니까. 그렇기에 문제가 주어졌을 땐 항상 문제의 크기와 조건을 먼저 보고 방법을 생각해야 한다. - 시간 복잡도 방법을 생각했다면 그 다음 고려해야 할 것은 시간 복잡도이다. 문제 해결 능력을 측정하는 알고리즘 문제 해결에선 특히 시간이 짧을 수록 효율적이라고 본다 그렇기에 문제가 주어졌을 때 떠올린 해결 방법이 최악의 경우 얼마나 시간이 걸릴지를 대문자 O를 사용하는 표기하는 Bi..
-
백준 단계별 문제풀기 1단계 클리어Problem Solving/Know-how 2019. 7. 7. 20:57
사실 '입출력과 사칙연산' 단계인 만큼 1단계에 굳이 포스팅을 할 만한 수준의 문제는 없다. 자바로 풀었다면 12문제 푸는데 5분 컷 가능. 그러나 생전 처음 접하는 C++로 풀려다 보니 시간이 좀 걸렸다. 그래서 시간이 걸린 문제들 목록, 지연 사유와 함께 그 과정에서 공부한 것들을 포스팅한 링크를 더해 1단계를 클리어한 기록을 남긴다. 서른 되며 느낀건데 별 거 아닌 것 같아도 이렇게 조그마한 성과를 매일 매일 눈에 보이게 쌓아나가는 게 중요한 거 같더라고. 이 덕에 누군가의 응원을 받게 된다면 더할 나위 없을 것 같고 (추천과 댓글을 남겨 달라는 말입니다 여러분! ㅋㅋㅋ) 아무튼 이제 2단계 가즈아! 1. 2557번 문제 ( Hello World ) : https://www.acmicpc.net/p..