Programming85 [백준] 3985번 롤 케이크 파이썬 해설 출처 : https://www.acmicpc.net/problem/3985 3985번: 롤 케이크 문제 인기 티비 프로그램 "나는 요리사 인가?"의 새 시즌이 시작한다. 이번 시즌은 기네스북에 등재될 만한 음식을 만드는 것을 목표로 진행한다. 첫 번째 에피소드에 출연하는 요리사는 전설의 요리사 김상근이고, 길이 L미터의 롤 케이크를 만들 것이다. 상근은 몇 시간동안 집중해서 케이크를 만들었고, 이제 스튜디오의 방청객 N명에게 케이크를 나누어 주려고 한다. 상근이는 롤 케이크를 펼쳐서 1미터 단위로 잘라 놓았다. 가장 왼쪽 조각이 1번, 오른쪽 조각이 www.acmicpc.net 시뮬레이션으로 알고리즘으로 분류된 문제이다. 개인적으로 시뮬레이션 문제가 익숙하지 않아서 많이 풀어보려고 하는 중이다. 그냥 한.. Programming/Algorithm 2019. 10. 3. [DB][MySQL] 데이터베이스를 공부하기 전 기본 개념과 개발 환경 설정 관계형 데이터 베이스 관리 시스템 (RDBMS) DB공부에 사용할 Data Base Management System(이하 BDMS)는 MySQL이다. 모든 DB가 표준 SQL을 기본으로 하기 때문에 가장 기본적으로 공부하기 위한 DB를 선택했다. 공부에 사용 할 MySQL은 관계형 데이터 베이스 관리 시스템이다. 위 랭킹표에서 볼 수 있는 것처럼, 가장 보편화된 모델 중 하나이다. 테이블을 사용하여 데이터를 정의하고, 속성과 값 사이의 관계를 이용한다고 생각하면 된다. (정보처리 기사 자격증을 취득한 것이 도움이 될 것 같다.) SQL(Structured Query Language) 컴퓨터 언어의 종류에 C언어나 Python언어가 있듯이 SQL은 RDBMS을 관리하기 위한 표준 프로그래밍 언어이다. 실제.. Programming/DataBase_Python 2019. 10. 3. [Go] 7. Go(golang)의 배열과 슬라이스 오늘 정리할 내용은 배열(array)과 슬라이스(slice)이다. 배열에 대한 내용은 타 언어와 매우 유사하여 금방 정리하겠지만, 슬라이스에 대한 내용은 익숙한 개념이 아니기 때문에 추후 수정이 있을 것 같다. C++의 벡터와 유사한 것 같기도 한데.. 일단 정리해보자 Go언어는 "컬렉션"이라는 개념이 존재한다. 두 개 이상의 변수를 모아 놓은 것을 말하는 단어이며, 오늘 정리할 배열과 슬라이스도 "컬렉션"에 포함된다. Go언어의 배열 Go언어의 배열은 C언어의 배열, 즉 Managed Language의 배열과 유사하다. 정적 배열이라고 하는데, 쉽게 말해서 컴파일 과정에서 배열의 크기가 정해져 있어야 한다는 뜻이다. 먼저 가장 기본적인 코드를 실행시켜보자. package main import "fmt".. Programming/GO 2019. 10. 1. [백준] 14409번 주사위 굴리기 파이썬 해설 출처 : https://www.acmicpc.net/problem/14499 14499번: 주사위 굴리기 첫째 줄에 지도의 세로 크기 N, 가로 크기 M (1 ≤ N, M ≤ 20), 주사위를 놓은 곳의 좌표 x y(0 ≤ x ≤ N-1, 0 ≤ y ≤ M-1), 그리고 명령의 개수 K (1 ≤ K ≤ 1,000)가 주어진다. 둘째 줄부터 N개의 줄에 지도에 쓰여 있는 수가 북쪽부터 남쪽으로, 각 줄은 서쪽부터 동쪽 순서대로 주어진다. 주사위를 놓은 칸에 쓰여 있는 수는 항상 0이다. 지도의 각 칸에 쓰여 있는 수는 10을 넘지 않는 자연수 또는 0이다. 마 www.acmicpc.net 시뮬레이션으로 알고리즘으로 분류된 문제이다. 코딩 테스트를 준비하는 데 있어서 주사위 문제는 필수라고 생각한다. 가장 .. Programming/Algorithm 2019. 10. 1. [백준] 14501번 퇴사 파이썬 해설 출처 : https://www.acmicpc.net/problem/14501 14501번: 퇴사 첫째 줄에 백준이가 얻을 수 있는 최대 이익을 출력한다. www.acmicpc.net 부루트 포스, 다이나믹 프로그래밍 알고리즘으로 분류된 문제이다. 부루트 포스 알고리즘은 모든 경우를 다 비교해보는 무식한 알고리즘이라고 하는데 사실 다이나믹 프로그래밍과의 차이를 모르겠다. 풀이 나름 부루트 포스 알고리즘의 방향으로 접근해보려 했으나, 정답을 맞히고 보니 다이나믹 프로그래밍 알고리즘을 이용해서 문제를 해결하였다. 정말 무슨 차이인지 모르겠다. 우선 문제를 잘 이해하고 문제 풀이의 흐름을 정했다. N이 주어지면 마지막 N일 부터 최대로 돈을 벌 수 있는 경우를 체크했다. 여기서 주의할 점은 N번째 날은 상담에 .. Programming/Algorithm 2019. 9. 30. [백준] 2217번 로프 파이썬 해설 출처: https://www.acmicpc.net/problem/2217 2217번: 로프 N(1≤N≤100,000)개의 로프가 있다. 이 로프를 이용하여 이런 저런 물체를 들어올릴 수 있다. 각각의 로프는 그 굵기나 길이가 다르기 때문에 들 수 있는 물체의 중량이 서로 다를 수도 있다. 하지만 여러 개의 로프를 병렬로 연결하면 각각의 로프에 걸리는 중량을 나눌 수 있다. k개의 로프를 사용하여 중량이 w인 물체를 들어올릴 때, 각각의 로프에는 모두 고르게 w/k 만큼의 중량이 걸리게 된다. 각 로프들에 대한 정보가 주어졌을 때, 이 로프들을 www.acmicpc.net 그리디 알고리즘으로 분류된 문제이다. 그리디 알고리즘의 정의는 미리 정한 기준에 따라서 매번 가장 좋아 보이는 답을 선택하는 알고리즘이.. Programming/Algorithm 2019. 9. 29. [Go] 6. Go(golang)의 조건문과 분기문 조건문 정도는 내용 정리를 생략하려고 했지만, Go언어의 조건문은 다른 언어들에 비해 제약사항이 많은 편이기 때문에 한 번 정리하는 것도 괜찮을 것 같다는 생각이 들었다. Go 언어의 조건문은 불친절한 구문이다. Go언어의 목표 중 "읽기 쉬운 코드"를 실현하기 위해서 라고 생각한다. Go언어의 if o 기본적인 특징 package main import "fmt" func main() { num := 10 if num == 10 { fmt.Println("num 은 10 이군요!") } } 위 코드는 가장 기본적인 Go언어의 조건문 형식이다. 다른 언어와 다른점은 if문의 조건으로 Boolean형이 사용되어야 한다는 것이다. 예를 들면 아래와 같은 코드는 오류가 발생한다. func main() { num.. Programming/GO 2019. 9. 27. [백준] 2178번 미로 탐색 파이썬 해설 출처: https://www.acmicpc.net/problem/2178 2178번: 미로 탐색 첫째 줄에 두 정수 N, M(2 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 M개의 정수로 미로가 주어진다. 각각의 수들은 붙어서 입력으로 주어진다. www.acmicpc.net BFS로 분류된 문제이다. BFS를 풀어본 적이 있다면 해당 문제의 코드를 조금만 변형하면 문제를 풀 수 있을 것이다. 풀이 BFS알고리즘의 기본적인 방법으로 문제에 접근했다. from collections import deque import sys input = sys.stdin.readline find_arr = [(-1, 0), (0, -1), (0, 1), (1, 0)] 먼저 문제의 규칙을 적용할 수 있는 리스트를.. Programming/Algorithm 2019. 9. 26. [백준] 1654번 랜선 자르기 파이썬 해설 출처: https://www.acmicpc.net/problem/1654 1654번: 랜선 자르기 첫째 줄에는 오영식이 이미 가지고 있는 랜선의 개수 K, 그리고 필요한 랜선의 개수 N이 입력된다. K는 1이상 10,000이하의 정수이고, N은 1이상 1,000,000이하의 정수이다. 그리고 항상 K ≦ N 이다. 그 후 K줄에 걸쳐 이미 가지고 있는 각 랜선의 길이가 센티미터 단위의 정수로 입력된다. 랜선의 길이는 231-1보다 작거나 같은 자연수이다. www.acmicpc.net 이분 탐색을 사용하면 쉽게 풀 수 있는 문제이다. 이분 탐색의 대표적인 예제인 "나무 자르기" 같은 문제를 풀었다면, 약간의 변화만 줘도 이 문제를 맞힐 수 있을 것이다. 풀이 이진 검색 알고리즘 이라고도 불리는 이분 탐색 .. Programming/Algorithm 2019. 9. 25. [백준] 1904번 01타일 파이썬 해설 출처 : https://www.acmicpc.net/problem/1904 1904번: 01타일 지원이에게 2진 수열을 가르쳐 주기 위해, 지원이 아버지는 그에게 타일들을 선물해주셨다. 그리고 이 각각의 타일들은 0 또는 1이 쓰여 있는 낱장의 타일들이다. 어느 날 짓궂은 동주가 지원이의 공부를 방해하기 위해 0이 쓰여진 낱장의 타일들을 붙여서 한 쌍으로 이루어진 00 타일들을 만들었다. 결국 현재 1 하나만으로 이루어진 타일 또는 0타일을 두 개 붙인 한 쌍의 00타일들만이 남게 되었다. 그러므로 지원이는 타일로 더 이상 크기가 N인 모든 2진 수 www.acmicpc.net DP문제의 가장 기본적인 "타일" 문제를 정리해보자! DP에 대한 정의는 나름 여기에 정리해두었다. 풀이 문제의 특징을 잘 정리.. Programming/Algorithm 2019. 9. 24. [Go] 5. Go(golang)의 반복문 반복문과 조건문 만 제대로 익혀도 구구단 정도의 간단한 문제는 간단하게 풀 수 있게 된다. 오늘은 Go언어에서 반복문에는 어떤 특징이 있는지 잘 정리해 보자. Go의 for Go언어 반복문의 특징은 while문이 없다는 점이다. while문의 기능을 for문으로 구현할 수 있기 때문에 반복문은 for문만 기억하면 된다. while문을 자주 사용해서 불편할 것 같지만, 반복문을 사용하기 위해서 한 가지 문법만 기억하면 된다는 점은 마음에 들었다. 아래 코드는 for문의 가장 기본적인 예제를 만들어봤다. package main import "fmt" func main() { var number int fmt.Print("정수 한 개를 입력해 주세요 : ") fmt.Scanf("%d", &number) for.. Programming/GO 2019. 9. 23. [백준] 2579번 계단오르기 파이썬 해설 하루에 적어도 한 문제는 풀고 싶은데, 요즘 너무 바빠서 블로그에 풀이를 남기는 건 일주일에 한 번 꼴로 하게 될 것 같다.. 빨리 취업해서 역량을 펼치고 싶다. DP - Dynamic Programming 백준의 카테고리 중 "분류 별 풀어보기"를 들어가보면 가장 많은 문제를 차지하고 있는 문제 유형이다. 동적 프로그래밍이라는 알고리즘? 풀이방법? 나는 알고리즘이라는 말 보단 풀이 방법이라는 단어가 더 어울리는 것 같다. 정의는 위키백과에 찾아보면 되고, 내가 생각하는 동적 프로그래밍을 재 정의해보면 "재활용"이라고 생각한다. 구현하는 건 어려울게 하나도 없다. 정말 이전의 값을 재활용해서 불필요한 반복을 없애고, 그만큼 시간 복잡도를 줄이도록 구현하면 된다. 문제 풀이를 위한 조건 간단하게 정리 1... Programming/Algorithm 2019. 9. 13. 이전 1 ··· 3 4 5 6 7 8 다음