Home

재귀 함수(recursion)와 반복문(iteration) 장단점과 꼬리 재귀(tail call recursion)의 개념

1. 재귀 함수와 반복문의 장단점 비교 함수를 생성할 때, 반복해서 동작시켜야되는 소스코드를 만들어야 할 때가 있습니다. 이 때, 사용하는 방법이 주로 재귀 함수(recursion)와 반복문(iteration)입니다. 재귀함수와 반복문을 사용할때의 장단점은 아래와 같습니다. 자세한 내용은 아래에서 언급하겠습니다.   재귀 함수 반복문 장점 - 상대적으로 간결한 코드 - 속도가 상대적으로 빠름 단점 - 메모리를 많이 사용함 - 속도가 상대적으로 느림 - ...

Read more

Keyboard 입력을 원할 때 막아주는 프로그램 소개 및 다운로드

1. 소개 및 설치 저는 서피스 제품군을 사용하고 있는데, 펜을 사용하거나 터치를 사용할 때 키보드를 입력하는 경우가 많습니다. 이 경우 제대로 입력이 안되어 매우 불편한 상황입니다. 이러한 상황을 해결하기 위해서 저는 키보드 입력을 막기 위해서 프로그램을 사용합니다. 찾은 프로그램 중에 가장 심플하고 간단하여 해당 프로그램을 공유 드립니다. 프로그램의 이름은 Keyboard-Locker.zip 입니다. 프로그램 이름을 클릭하면 바로 설치가 가능합니다. 압축 파일을 풀면 하기와 같은 구성으로 이루어져있습니다. 압축 파일을 풀면 바로 프로그램을 실행할 수 있습니다. 프로그램을 실행하면 아래와 같은 팝업이 뜨...

Read more

[백준] 16236번 아기 상어 _ 문제 풀이

1. 문제 https://www.acmicpc.net/problem/16236 2. 풀이 삼성 SW 역량테스트 문제입니다. 하기와 같이 풀이했습니다. 자세한 사항은 소스코드를 참고해주세요. 상어가 갈 수 있는 공간을 찾을 때는 BFS 를 이용합니다. 같은 거리에서 갈 수 있는 곳이 여러 곳이 있으면, 정렬하여 가장 앞에 있는 요소를 꺼냅니다. (행, 열)로 정렬한 경우 원하는 값이 나오게 됩니다. 좌표를 이동할 때, 사라지는 물고기와 상어의 index 변경을 잊지 말고 체크해주어야합니다. # 패키지 from collections import deque # 상수 ...

Read more

[백준] 20057번 마법사 상어와 토네이도 _ 문제 풀이

1. 문제 https://www.acmicpc.net/problem/20057 2. 풀이 삼성 SW 역량테스트 문제입니다. 삼성 문제 중 가장 정답률이 높은데, 예제를 통과하고 이상없이 문제를 통과했습니다. 각 진행 방향에 따라 곱해야되는 값을 가진 배열 A를 생성해서 문제를 풀었습니다. 배열 A를 소스코드로 구현할 때 오류가 있어서 시간을 좀 쏟았는데, 구현이 애매할때는 그냥 다 쓰는게 훨씬 빠를 것 같습니다. (아래, 오른쪽, 위, 왼쪽) 순서로 진행. 크기는 오른쪽에서 위로 갈때와 왼쪽에서 아래로 갈 때 1씩 증가하는 형태를 가집니다. 좌표 row, col 를 생성하고 -1, 0 에 도달할...

Read more

[백준] 19236번 청소년 상어 _ 문제 풀이

1. 문제 https://www.acmicpc.net/problem/19236 2. 풀이 삼성 SW 역량테스트 문제입니다. 물고기가 움직이는 공간은 물고기가 있는 공간만 가능하다고 착각하여 시간이 너무 오래 소요된 문제였습니다. 상어가 어디로 이동할 지 모르기 때문에, dfs 를 이용하여 모든 경우의 수를 구하여 정답을 구하면 됩니다. ~~~python import copy dr = [-1, -1, 0, 1, 1, 1, 0, -1] dc = [ 0, -1, -1, -1, 0, 1, 1, 1] N = 4 maps = [[] for _ in range(N)] ate_fish = 0 shark_loca = [0,...

Read more

[백준] 19238번 스타트 택시 _ 문제 풀이

1. 문제 https://www.acmicpc.net/problem/19238 2. 풀이 삼성 SW 역량테스트 문제입니다. 최소 거리에 있는 고객을 찾고 목적지 까지의 비용을 찾기 위하여 BFS 를 이용하여 가능한 경우 중에서 답을 선택합니다. 조건 중에 정답을 찾고 탈출하지 않는 경우의 case 를 처리하지 못하여 계속해서 오답이 났었습니다. 모든 경우에서 탈출할 수 있게 꼼꼼히 살펴야 될 것 같습니다. 9967han님이 올려주신 반례글(https://www.acmicpc.net/board/view/52841)을 넣고 겨우 답을 찾을 수 있었습니다. 감사드립니다. 6 4 15 0 0 1 0 0 0 0 ...

Read more

[백준] 2108번 통계학 _ 문제 풀이

1. 문제 https://www.acmicpc.net/problem/2108 2. 풀이 숫자의 빈도는 dictionary를 이용하여 세줍니다. 정렬은 python 내장함수 sort 를 이용해줍니다. python의 기본 내장함수 input을 사용하면 속도가 매우 느리기 때문에, 시간초과가 발생합니다. sys 모듈에 있는 sys.stdin.readline 함수를 사용해주면 손쉽게 문제를 해결해줄 수 있습니다. import sys arr = [] dict = {} for _ in range(int(sys.stdin.readline())): val = int(sys.stdin.readline()) ...

Read more

[Python] Recursion Error 재귀 함수 오류 최대 한도 제한 변경

1. 문제 알고리즘 문제를 해결하던 중에, python을 이용하여 dfs 문제를 푸는 경우가 있었습니다. 이 때, 재귀함수를 사용하고 나서 Recursion Error 런타임 에러가 발생했습니다. 이는 python의 기본 재귀함수 깊이가 1000으로 한도가 설정되어 있기 때문입니다. 알고리즘은 맞는데 이런 문제로 시간을 많이 사용하면 시간이 크게 날아가니, 재귀함수 문제가 통과가 안될 때에는 이런 문제를 생각해보시는 것도 좋을 것 같습니다. 2. 문제 해결 방법 위의 문제를 해결해 주기 위해서는, python sys 모듈에 있는 setrecursionlimit 메소드를 사용하면 해결됩니다. 아래와 같은 방식으...

Read more