분류 전체보기 290

#2851 : 슈퍼 마리오

풀이방법 사용된 것: 브루트포스 알고리즘 2022.05.12 버섯을 앞에서부터 먹어가며 계산한다. 이번 버섯을 먹었을 때의 총합이 100보다 작은 경우에는 무조건 먹는 것이 이득이므로 먹고 넘어간다. 이번 버섯을 먹었을 때의 총합이 100 이상인 경우가 처음 등장했을 때 답을 출력해야 한다. 다음과 같은 과정을 통해 답을 결정한다. 이번 버섯을 먹었을 때 총합이 100보다 얼마나 큰지 그 차를 변수 A에 저장한다. 이번 버섯을 먹지 않을 때 총합이 100보다 얼마나 작은지 그 차를 변수 B에 저장한다. 그리고 A와 B를 비교한다. A보다 B가 작다면 이번 버섯의 값을 더하지 않은 총합 (이번 버섯을 먹지 않았을 경우의 총합)을 화면에 출력하고 프로그램을 종료한다. B보다 A가 작다면 이번 버섯의 값을 더..

#9742 : 순열

풀이방법 사용된 것: 백트래킹 2022.05.10 백트래킹 문제이다. 아래의 정답 코드는 가지치기 없이 모든 경우의 수를 다 검사하도록 하였고 이렇게 해도 시간초과가 나지 않기 때문에 브루트포스 알고리즘 문제라고도 할 수 있다. 가능한 모든 순열을 만들면서, 새 순열이 만들어질 때마다 하나씩 세어준다. 세다가 그 숫자가 문제에서 주어진 번호(N)에 도달하면 그 번호의 순열을 출력 문자열에 추가하면 된다. 주어지는 글자들이 사전순으로 주어지므로, 입력 문자열의 앞에 있는 글자부터 하나씩 순서대로 순열에 추가하는 식으로 순열을 만들면 된다. 그럼 결과물인 순열들도 자연스럽게 사전순으로 앞에 있는 것부터 순서대로 도출된다. "No permutation"을 출력해야 하는 유일한 경우는 바로 문제에서 주어진 번호..

#2160 : 그림 비교

풀이방법 사용된 것: 브루트포스 알고리즘 2022.05.10 다 비교하면 된다. 알고리즘은 다음과 같다. 일단 그림 정보를 읽어온다. 그림의 색이 두 가지 뿐이므로 boolean 배열로 저장했다. 그 다음 비교를 한다. 필요한 변수는 min, a, b이다. int형 변수 min을 선언하고, 35보다 큰 수로 초기화한다. 정답에 해당하는 두 그림의 번호를 저장할 int형 변수 a와 b를 선언하고, 음수로 초기화한다. 그리고 가능한 모든 쌍에 대하여 다음의 과정을 반복한다. 두 그림을 선택한다. 두 그림을 비교하여, 서로 다른 칸의 개수를 센다. 서로 다른 칸의 개수를 담은 변수를 temp라 하겠다. min과 temp를 비교한다. min보다 temp가 작다면 min의 값을 temp로 업데이트하고, 방금 센 ..

3강 장고 기본 파트 : 투표 사이트 만들기 - 서버 실행

저번에 만든 파이썬 프로젝트 밑에 장고 프로젝트 밑에 웹 앱을 만듦. 저번에 startproject라는 명령어를 썼는데 이번에는 startapp이라는 명령어로 만듦. python manage.py startapp votes votes라는 이름의 앱을 생성하는 커맨드. startapp manage.py라는 파일 안에 정의되어있는 명령어인 듯? 그리고 votes는 명령어 실행을 위해 넘겨주는 인자. 웹 앱의 이름만 겹치지 않는다면 한 장고 프로젝트 내에 여러 개의 웹 앱을 만들 수 있음.(startapp 명령어를 반복적으로 사용.) 서버를 실행하는 명령어 runserver runserver라는 명령어로 서버를 실행할 수 있음. python manage.py runserver url path 정의하기 웹 애플..

3강 장고 기본 파트 : 투표 사이트 만들기 - 장고 설치하기 및 구조

파이썬 기반이라서 파이썬 IDE를 설치해주어야 함. 초보자 대상 강의라서 그런지 자세한 설명은 해주시지 않았음. PIP, Vertualenv가 파이썬 개발을 돕는? 것들이라고 함. PIP를 이용해서 장고를 설치한다고 하심... 실제로 프로젝트 생성 후에 터미널 창을 열어 커맨드로 장고를 설치했음. 이 과정에 PIP가 관여하는 듯? 파이썬도 자바처럼 프로젝트 단위로 개발을 함. 파이썬 프로젝트를 새로 만들어서 엶. 그 다음에 커맨드를 이용해서 장고 프로젝트를 하나 만듦. django-admin startproject 프로젝트이름 위와 같이 입력하면 됨. 그러면 파이썬 전체 프로젝트 하위에 또 하나 폴더가 생김... 파이썬 프로젝트 'voteapp' 그 아래에 장고 프로젝트 'voteapp' 그 아래에 이 ..

오답노트 #1744 : 수 묶기

풀이방법 및 문제점 2022.05.07 문제 없이 알고리즘을 잘 짰다고 생각했는데 50%에서 계속 막힌다. 정답이 2의 31제곱 미만이라는 것을 보고 화끈하게 BigInteger로 다루어보았는데 그래도 똑같이 50%에서 틀린다. 흠... 내가 놓친 분기 또는 반례가 있는 것 같다. 모든 가능한 분기를 하나하나 적어가며 빈틈없이 만들어봐야 하나? 거의 다 왔다는 생각이 들어 구글링하기가 아깝다. 알고리즘은 다음과 같다. 음수와 양수를 따로 다룬다. 음수의 경우 다음과 같이 다룬다. 가장 작은 수 즉 절댓값이 큰 것들부터, 모든 음수를 짝짓는다. 주어진 수들 중 음수가 -1, -5, -2, -7 이렇게 네 개라면 (-7, -5), (-2, -1) 이런 식으로 짝짓는 것이다. 만약 음수가 홀수 개라면 가장 절..

#1037 : 약수

풀이방법 사용된 것: 정렬 수학 2022.05.07 정수 N의 값은 N의 가장 작은 1이 아닌 약수와 N의 가장 큰 본인이 아닌 약수를 곱한 것과 동일하다. 주어지는 약수들을 모두 읽어온 다음, 그 중에서 가장 작은 것과 큰 것을 곱한 값을 화면에 출력하면 된다. 코드 Java(2022.05.07) import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; import java.util.StringTokenizer; public class Main { public static void main(String[] args) throws IOException{..

#11651 : 좌표 정렬하기 2

풀이방법 사용된 것: 정렬 Comparator Overriding 2022.05.04 Comparator를 오버라이드하여 정렬하면 된다. ▼Comparator Overriding하는 법 자바에서 내 마음대로 정렬하기: Comparator Overriding 기본 데이터타입이 아닌 객체(Object)를 정렬해야 할 때가 있다. 또한, 자바에서 기본으로 제공해주는 정렬함수로는 수행하기 힘든 복잡한 방식/기준의 정렬이 필요할 때도 있다. 백준 #1931 회의실 blowupmomo.tistory.com 코드 Java(2022.05.04) import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; impor..

#14928 : 큰 수 (BIG)

풀이방법 사용된 것: 수학 2022.05.03 오늘 새벽에 갑자기 올 솔브 배경이 가지고 싶어져서 가장 쉽고 문제 수도 적은 편인 브론즈 5 레벨 문제를 모두 푸는 켠왕을 시작했다. 방금 막 완료했다. ㅋㅋㅋㅋㅋㅋㅋㅋㅋ휴학하니까 별 뻘짓을 다 한다. 브론즈 5 쯤이야 껌이라고 생각했는데 50문제 넘게 풀다 보니 꽤 오래 걸렸다. 그리고 나름 새롭게 알게 된 것들도 있다. 난이도를 버린 대신 유머를 택한 나사 빠진 문제들이 많아서 재미있었다. 아무튼 이 글을 쓰는 것은 배경 얻은 날을 기록하기 위해서이기도 하지만 밤새 푼 브론즈 5 문제들 중 적어둘 만 한 문제가 하나 있기 때문이다. 14928번 문제는 큰 수의 나머지를 구하는 문제인데, BigInteger를 사용하면 시간초과가 난다. BigInteger..

#1436 : 영화감독 숌

풀이방법 사용된 것: 브루트포스 알고리즘 2022.05.03 1번째부터 10000번째까지의 종말의 수를 모두 미리 찾아두고, 그 중에서 입력값에 알맞은 수를 골라 출력하면 된다. 666부터 시작하여 모든 정수를 점검한다. 해당 수가 종말의 수라면 배열에 저장한다. 배열에 10000번째 종말의 수가 저장되면 점검을 종료한다. 입력값을 N이라 할 때, 배열에 N번째로 저장된 수를 화면에 출력하면 된다. 코드 Java(2022.05.03) import java.util.Scanner; public class Main { public static void main(String[] args){ // TODO Auto-generated method stub Scanner sc = new Scanner(System...