1. readline() : 입력 속도를 빠르게 프로그래머스에는 입력값을 모두 주지만 실제 시험을 볼때는 입력값을 받는 코드도 구현해야 하는 경우가 있다. import sys data = sys.stdin.readline() 2. 리스트 곱셈 미리 할당해 놓은 고정 배열에다가 계산하는 경우에 쓴다. 초기화와 할당을 동시에 할 수 있다. data1 = [0 for _ in range(1000)] data2 = [0] * 1000 3. 그외 문자열 합치기 : join()을 사용하자 반복문을 사용할 때는 짧은 것 부터 사용하자 슬라이싱 : 불필요한 연산을 최소로 슬라이싱 kospi_top10 = ['삼성전자', 'SK하이닉스', '현대차', '한국전력', '아모레퍼시픽', '제일모직', '삼성전자우', '삼성..
문제 접근 민다는거는 순환 한다는 것과 같다. 얼만큼 한칸씩 돌았는지 알아야함배경지식 deque Python의 데이터 구조로 양쪽 끝에서 요소를 효율적으로 삽입하고 삭제할 수 있습니다. 스택과 큐의 조합으로 생각할 수 있습니다. 스택과 큐를 한번에!! 사용법 from collections import deque 1. 요소 추가 오른쪽 끝에 요소 추가는 append 왼쪽 끝에 요소를 추가 할 때는 appendleftmy_deque.append(10) my_deque.appendleft(5)2. 요소 제거 가장 오른쪽 요소 제거 및 반환: pop() 맨 왼쪽 요소 제거 및 반환: popleft()rightmost_element = my_deque.pop() leftmost_element = my_deque...
문제 접근 i 부터 j+1까지 반복문을 돌려서 i부터 j까지 숫자를 뽑아야한다 그것들을 문자로 변환해야한다(문자여야 iterable 하기 때문에 단어안에 내가 원하는게 들어있는지 확인 가능하다) cnt 변수를 하나 만들어서 k가 나올 때 마다 카운트 한다.특이점 만약 1이 들어있는지 확인해야 하는 경우에 11이 있는 것을 고려해야한다. 11은 1이 두번 들어있지만 이걸 처리 안하면 1이 한개로 인식 될것.학습 count 함수 주어진 개체 내에서 특정 요소의 발생 횟수를 계산할 수 있습니다. my_string = "Hello, hello, hello!" count = my_string.count("hello") print(count) # Output: 3 my_list = [1, 2, 3, 2, 4, 2,..
문제 접근 before라는 단어를 조합해서 after이 나올 수 있다면 두 단어를 정렬했을때 같은 단어가 나와야 한다. 풀이 def solution(before, after): before = sorted(before) # 1 after = sorted(after) # 2 if before == after: # 3 return 1 else: return 0 before 단어 정렬 after 단어 정렬 두개의 단어가 같다면 (조합해서 after로 만들 수 있음) 1리턴, 아니면 0 리턴팁 하나의 단어를 조합해서 어떤 단어가 만들어진다면 두개를 정렬했을 때 같은 단어다
문제 접근 치킨 한마리당 쿠폰 한개이기 때문에 치킨과 쿠폰을 같다고 생각해도 된다 즉, 10마리당 한마리 서비스를 받을 수 있기 때문에 치킨 수를 10으로 나누면 받을 수 있는 서비스 치킨 수가 나오고 이것은 곧 쿠폰수와 동일하다 이때 나오는 나머지는 서비스는 받지 못하지만 남은 쿠폰수를 의미한다예시 1081마리를 주문했다고 가정하면 10으로 나눴을 때 몫 108과 나머지 1이 나온다. 서비스로 받을 수 있는 치킨 수는 108마리이고 이것은 쿠폰수와 동일하다 남은 쿠폰은 1개이다 쿠폰은 총 109개가 된다 109개 쿠폰은 10마리로 바꿀 수 있고 쿠폰 9개가 남는다. 1마리는 1개 쿠폰이기 때문에 다시 쿠폰 19개가 생기고 쿠폰 10개는 1마리로 변환되고 9개 쿠폰이 남는다 9개 쿠폰은 1마리로 변환이 ..
문제 필요 지식 lambda 문법 lambda 매개변수: 식 예시1 add = lambda x,y : x + y print(add(2,3)) # 출력 5 x와 y를 받아서 적혀있는 식에 따라서 5를 반환 예시2 numbers = [1, 2, 3, 4, 5] squared = map(lambda x: x ** 2, numbers) print(list(squared)) # 출력: [1, 4, 9, 16, 25] map을 사용해서 새로운 리스트를 반환함 numbers 각 요소 x를 제곱 하여 새로운 리스트를 생성하고 squared에 넣는다문제 풀이 접근방법 n과 가까운 수를 리스트에서 찾으려면 numlist 각 요소(x) 에서 n을 빼서 차이를 확인하면됨. list의 각 요소를 확인해서 하나씩 빼려면 lamb..
풀이 2차원 배열 표현 문제 안에서 고려해야할 방향은 상, 하, 좌, 우, 대각선까지 총 4갈래방향 x,y 좌표상에서 지뢰의 위치를 (0,0)이라고할때 고려할 수 있는 위치는 (1,0) : 상 (-1,0) : 하 (0,1) : 우 (0,-1) : 좌 (1,1) : 우상 (-1,1) : 좌상 (-1,-1) : 좌하 (1,-1) : 우하 총 8방향 코드 def solution(board): answer = 0 # 사각형을 만들어주는 좌표 리스트 N = len(board) # dx: x좌표에서 나올 수 있는 경우의 수 리스트 dx = [-1,1,0,0,-1,-1,1,1] # dy: y좌표에서 나올 수 있는 경우의 수 리스트 dy = [0,0,-1,1,-1,1,-1,1] # z : 지뢰가 설치된 곳 z = []..
유클리드 호제법 최대공약수를 구하는 대표적인 알고리즘 예시 12와 18의 최대공약수를 유클리드 호제법을 통해 구하시오 풀이 12를 18로 나누어본다 i) 나머지가 0이면 18이 최대공약수임 ii) 아니면 다음 단계로 넘어감(나머지가 12임) 18을 1에서 구한 나머지로 나누어본다 i) 나머지가 0이면 1에서 구한 나머지가 최대공약수임 ii) 아니면 나머지를 구함(나머지는 6) 1에서 구한 나머지를 2에서 구한 나머지로 나누어본다 i) 나머지가 0이면 2에서 구한 나머지가 최대 공약수 ii) 아니면 계속... 정리 다음 단계에서 분모는 분자가 된다 다음 단계에서 나머지는 분모가 된다 출처 : https://chan-lab.tistory.com/34 활용 재귀함수를 사용하여 유클리드 호제법 구현 def gc..