Algorithm/파이썬 풀이 10

#10_ 비밀지도(2017 카카오톡 블라인드테스트 1차)

안녕하세요. 문범우입니다.이번에 소개해드릴 알고리즘 문제는, 2017년 카카오톡 블라인드테스트 1차 코딩시험에서 나왔던 문제중 난이도가 제일 낮다는 소개된 '비밀지도' 문제입니다. 해당 문제는 프로그래머스를 통해, 아래 주소에서 만나보실 수 있습니다.https://programmers.co.kr/learn/courses/30/lessons/17681?language=python3 난이도가 가장 낮다고 소개된 만큼, 문제자체도 간단하고 풀이도 어렵지 않습니다.따라서 해당 문제는 추가적인 설명대신 코드만 첨부해드리도록 하겠습니다.추가적으로 궁금한 사항이 있으시면 언제든지 댓글 및 카카오톡이나 이메일을 통해서 연락주시면 바로 답변드리도록 하겠습니다. 123456789101112131415161718192021..

#9_ 추석트래픽(2017 카카오톡 블라인드테스트 1차)

안녕하세요. 문범우입니다.요새 많은 기업들이 공채시즌이 다가와서 그런지, 평소보다 알고리즘 문제풀이에 대한 학원이나 온라인강의에 대한 광고가 많아진 것 같네요. 요새보면 대부분의 기업에서 SW인원들은 다른 시험보다 코딩테스트를 중요시하고 있고 많은 사람들이 제일 까다로워 하는 부분인 것 같습니다. 요새 개인적으로 공부하는 기계학습이나, 리액트네이티브때문에 블로그활동을 자주못하고 있는데, 오랜만에 프로그래머스에 들어갔다가 2017년 카카오톡 블라인드테스트 1차 코딩문제를 공개해두었길래 이번주에 하나씩 풀어보려합니다. 처음에는 쉬운문제부터 풀어보려했는데.. 나중에 확인해보니 이번에 소개해드릴 '추석트래픽' 문제가 가장 어려웠다고 하네요. 프로그래머스에서 제공하는 작년 카카오톡 코딩테스트 문제는 아래에서 만나..

#8_ 야근 지수(정확도 o, 효율성 o, 프로그래머스 level3)

안녕하세요. 문범우입니다. 오랜만에 파이썬으로 풀이한 재밌는 알고리즘 문제를 가져왔습니다.알고리즘 문제는 프로그래머스의 알고리즘 연습에 나온 야근 지수 문제이며 해당 문제는 아래 주소에서 풀어볼 수 있습니다.문제에 대한 설명도 해당 주소에 나와있기에 문제에 대한 설명은 생략하겠습니다.https://programmers.co.kr/learn/courses/30/lessons/12927 사실 예전에 매우 간단히 풀이한 문제인데다시 확인해보니 문제 개편이 되면서..테스트 케이스가 매우 까다롭게 변했더라구요.그래도 정확도 통과는 비교적 무난했지만, 효율성 테스트에서 계속 막혀 씨름을 하다가 마침내 풀게되었습니다.코드와 함께 간단한 해설을 첨부합니다.추가적으로 궁금하신점이 있으신분들은 이메일이나 카카오톡으로 언제..

#7_ Forming a Magic Square by python(파이썬으로 마방진 만들기)

안녕하세요. 문범우입니다.오랜만에 재미난 알고리즘 문제를 풀게되어 포스팅하게 되었습니다.문제의 출처는 HackerRank 이며 아래의 주소입니다. https://www.hackerrank.com/challenges/magic-square-forming/problem 문제설명에 대한 전문은 위의 링크에서 확인하실 수 있으며, 제 github에서도 확인하실 수 있습니다.https://github.com/doorBW/hacker_rank_algorithm_practice 문제에 대해서 간단히 설명드리면 아래와 같습니다. - Forming a Magic Square 먼저, Magic Square는 마방진이라고 이야기하겠고, 마방진에 대한 규칙은 다음과 같습니다.3*3 형태를 가지는 마방진 행렬에서는 1부터 9까..

#6_ 파이썬으로 링크드 리스트(Linked list) 구현하기

안녕하세요.이번 포스팅에서는 파이썬을 이용하여 링크드 리스트를 구현해보도록 하겠습니다. 1. 링크드 리스트(Linked list)란? 먼저 링크드 리스트가 무엇인지 간단히 살펴보도록 하겠습니다. 링크드 리스트는 위와 같이 세개의 형태를 가지고 있습니다.그림에서 두번째, 양방향 연결 리스트는 *Prev 가 자신보다 앞의 요소를 가르키는 것입니다.단순히 단방향 연결리스트를 구현하면 어떤 요소의 앞의 요소를 탐색하기 위해서 결국 다시 처음부터 검색을 진행해야 하는 일이 발생할 수 있기 때문에 수행능력이 보다 안좋을 수 있습니다.이러한 것을 보완하기 위해 양방향 연결 리스트 및 환형 연결 리스트라는 개념이 있는데, 이들은 단방향 연결 리스트보다 구현하기는 상대적으로 어려울 수 있지만 앞에서 말씀 드린 상황과 같..

#5_ 파이썬으로 큐(queue) 자료구조 구현하기

안녕하세요.이번 포스팅에서는 파이썬으로 큐 자료구조 구현에 대한 내용을 소개해드리도록 하겠습니다.1. 큐(Queue)란? 먼저 큐 자료구조에 대해서 간단하게나마 알아보도록 하겠습니다. 큐 자료구조는 위의 그림과 같이 요소(item)을 삽입하는 Enqueue 기능과 요소를 빼내는 Dequeue 기능이 있습니다.그리고 처음에 삽입한 요소가 먼저 빠지게 되는 First In First Out(FIFO) 특징을 가지고 있습니다. 2. 큐(Queue) 구현하기 제가 파이썬 코드로 구현한 큐 자료구조는 위에서 말씀드린 Dequeue 기능과 Dequeue 기능을 포함한, 큐가 비어있는지 확인하는 isEmpty 기능을 구현하였으며 추가로 큐가 비어있을때 Dequeue를 수행하면 에러메세지와 함께 False 값을 리턴하..

#4_ 파이썬으로 스택(Stack) 자료구조 구현하기

안녕하세요.최근 파이썬을 공부하면서 기본적인 자료구조 알고리즘을 구현해보고자 생각이 들어서 포스팅을 하게 되었습니다.제 노트북이 고장나서 노트북은 센터에 고이고이 잠들어있기 때문에.. 구름IDE로 코딩을 진행하였습니다.나름 괜찮다고 생각이 드네요. 그럼 파이썬으로 구현한 스택 자료구조를 소개해드리도록 하겠습니다.1. 스택이란? 먼저 스택 자료구조를 구현하기 전에 간단하게나마 해당 자료구조에 대해 알아보도록 하겠습니다. 위의 그림과 같이 스택은 push와 pop이라는 기능을 가지고 있습니다.스택 자료구조는 말 그대로, 쌓아 올리는 것과 같은 자료구조입니다.즉, push은 item을 쌓아올리는 기능이고, pop은 쌓여져 있는 item에서 제일 위의 것을 꺼내는 작업입니다.따라서 스택 자료구조는 Last In..

#3_ 설탕 배달(백준 2839번, 파이썬 풀이)

문제상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그램 봉지와 5킬로그램 봉지가 있다.상근이는 귀찮기 때문에, 최대한 적은 봉지를 들고 가려고 한다. 예를 들어, 18킬로그램 설탕을 배달해야 할 때, 3킬로그램 봉지 6개를 가져가도 되지만, 5킬로그램 3개와 3킬로그래 1개를 배달하면, 더 적은 개수의 봉지를 배달할 수 있다.상근이가 설탕을 정확하게 N킬로그램 배달해야 할 때, 봉지 몇 개를 가져가면 되는지 그 수를 구하는 프로그램을 작성하시오. 입력첫째 줄에 N이 주어진다. (3=0: if n%3 == 0: T = n//3 n = n%3 break F-=1 n+=5pri..

#2_ 피보나치 함수(백준 1003번, 파이썬 풀이)

문제다음 소스는 N번째 피보나치 함수를 구하는 함수이다. 1234567891011int fibonacci(int n) { if (n==0) { printf("0"); return 0; } else if (n==1) { printf("1"); return 1; } else { return fibonacci(n‐1) + fibonacci(n‐2); }}Colored by Color Scriptercs fibonacci(3) 을 호출하면 다음과 같은 일이 일어난다.fibonacci(3) 은 fibonacci(2) 와 fibonacci(1) (첫 번째 호출)을 호출한다.fibonacci(2) 는 fibonacci(1) (두 번째 호출)과 fibonacci(0) 을 호출한다.두 번째 호출한 fibonacci(1)..

#1_ 1로 만들기(백준 1463번, 파이썬 풀이)

문제정수 X에 사용할 수 있는 연산은 다음과 같이 세 가지 이다.1. X가 3으로 나누어 떨어지면, 3으로 나눈다.2. X가 2로 나누어 떨어지면, 2로 나눈다.3. 1을 뺀다. 정수 N이 주어졌을 때, 위와 같은 연산 세 개를 적절히 사용해서 1을 만들려고 한다. 연산을 사용하는 횟수의 최소값을 출력하시오. 입력첫째 줄에 1보다 크거나 같고, 10^6보다 작거나 같은 자연수 N이 주어진다. 출력첫째 줄에 연산을 하는 횟수의 최소값을 출력한다. 예제 입력 : 2예제 출력 : 1 예제 입력2 : 10예제 출력2 : 3 처음에는 알고리즘을 단순하게 생각했다가 바로 틀려버린 문제입니다.먼저 최종 정답으로 통과한 코드는 아래와 같습니다. 123456789101112131415161718192021222324a ..