코딩테스트준비 4

99클럽 코테 스터디 15일차 TIL | 백준 미로만들기 풀이, 최소비용과 BFS

문제 바로가기 : https://www.acmicpc.net/problem/2665 그림과 같은 N x N 미로가 있다. 빈방은 흰색(1), 벽은 검은색(0)이다.(0, 0)에서 시작해서 (n-1, n-1)로 가기 위해 최소 몇개의 벽을 뚫어야하는지 구하는 문제이다.한 변의 길이 N은 1 이상 50이하이고, 실행 제한시간은 1초이다.  처음에는 모든 경우의 수를 모두 돌아보되, 가능성이 없는 경로는 빠르게 쳐내기 위해 DFS로 빠르게 최소비용을 구하고자했었다.쓸데없이 경로를 꼭 알아야한다고 생각을 했던것...그렇지만 우리 문제는 어떤 경로를 사용했는지가 중요한 문제가 아니라서, BFS로 미로를 돌며 (0, 0)에서 임의의 (x, y)로 가려면 얼마의 비용이 드는지 구하는 것으로 방향을 틀었다. 전체 구현..

99클럽 코테 스터디 11일차 TIL | Python 고차함수는 iterator를 반환한다

함수형 프로그래밍을 공부하다보면 map, filter, reduce, foreach 등을 사용하여 의도가 명확하게 드러나도록 코드를 작성하는 시도를 하게된다. 파이썬에도 이러한 접근을 돕기위한 빌트인 라이브러리가 존재한다. 그런데 반환값이 특이하다.map(변환람다, 원본리스트) # 람다를 적용한 변환 결과를 map 형태로 반환filter(변환람다, 원본리스트) # 람다 결과가 True인 것만 뽑아서 filter 형태로 반환zip(키배열, 밸류배열) # 튜플 iterator 반환 map, filter를 반환한다는 부분이 이해가 안될 수 있는데, 정말 반환 결과의 타입을 출력해보면 각각 map과 filter로 나온다.  그리고 아래처럼 map은 두번 사용할 수가 없다.def divide_arr(): i..

99클럽 코테 스터디 10일차 TIL | 백준 1253. 좋다 반례 (Python)

문제 링크 : 백준 1253. 좋다  /  정답 코드 바로가기  주어진 N개의 수 중에서 '좋은수'를 찾아야한다.좋은수란 다른 두 수의 합으로 나타낼 수 있는 수를 의미한다.값이 같아도 숫자의 위치가 다르면 다른 수로 취급한다. [1, 1, 2, 2, 2]예를 들어 위 케이스에서, 각 2는 모두 다른 수이므로 결과는 3이 되어야한다. 숫자 배열의 길이는 1 ~ 2,000 이며, 각 수의 범위는 -1,000,000,000 ~ 1,000,000,000 이다. 예시 케이스Case 1 ) input : [-1, 0, 1] / output : 1 -1 은 좋은 수가 아니다. -1을 제외한 [0, 1] 로는 -1을 만들 수 없다.0 은 좋은수이다. (-1) + (1) 을 더해서 만들 수 있다.1 은 좋은 수가 아니..

99클럽 코테 스터디 9일차 TIL | 다단계 칫솔 판매 반례 (Python)

문제 링크 : 프로그래머스 다단계 칫솔 판매 항상 자신의 추천인에게 판매 대금의 10%를 떼줘야하는 다단계 기업이 있다.10% 수수료 계산시 소수점을 버림하는 규칙이 있다.아래와 같은 4개의 배열이 주어질 때, 주어진 각 멤버의 수익을 계산해서 배열로 반환해야한다.빠르게 부모 노드를 찾을 수 있는 자료구조를 고안하는것과, 반례를 찾는것이 중요한 문제였다. 예시 케이스조직도가 [ 사장 - A - B - C ] 형태일 때, 인풋은 아래와 같이 주어진다. 조직도는 아래 형태로 주어지고 [0][1][2]enroll (멤버이름)ABCreferral (추천인)- (사장은 "-" 로 표시한다.)AB 칫솔 판매 실적은 아래처럼 주어진다. 칫솔은 하나에 100원으로 고정이다. [0][1][2]seller (판매 담당자)..