본문 바로가기

알고리즘/프로그래머스

Lv2 문제(간단한거)

1. N개의 최소 공배수 구하기

- a,b의 최소공배수  : a * b // gcd(a,b)

 

 

2. [1260] dfs와 bfs (실버2)

- bfs는 "함수 시작하자마자, start노드 큐에 넣기 전에3 + 탐색 후 다음 노드 큐에 넣을 때 visited[i] = True로 바꾸기. 큐에서 뽑을 때 true로 바꾸면 중복접근됨

- 두 함수의 결과를 각각 한 줄 단위로 출력하고 싶으면 함수 내에선 print( ~,end = " "), 하고 함수 사이에 print("")넣기

- 맨 처음에 d_visited = b_visited = [False] * (N+1)로 했더니 둘이 같은 메모리 공간을 공유함! 즉 이름만 다르고 같은 배열처럼 됨!! 다른 문제 풀 때도 조심할 것 !!!1

- 헷갈리는 것 : 변수는 a= b= c= 10으로 할 수 있는데 배열은 다른가봄 

 

 

 

3. 오픈채팅방

- 파이썬에서 main함수 외 solution함수에서 선언한 배열이나 변수 등은 다른 함수에서 사용할 수 없음. 프로그래머스로 문제 풀땐 새로 함수 만들 때 필요한 배열을 전역으로 선언하거나 매개변수로 추가할 것

 

 

 

4.[11047] 동전 0 (실버2)

- 입력받을 때 한 줄 단위로 입력된 경우 : arr = [ int(input()) for _ in range(N) ] 

- for문 index 내림차순 방법 : for i in range(len(arr)-1, 0, -1)

 

5. JadenCase 문자열 만들기

- upper(), lower(), isupper(), islower() 
- 특정 위치의 index만 대문자로 바꾸고 싶을때 : s[0].upper() + s[1:]
- title() : 문자열의 첫 문자를 대문자로 변경 + 맨 앞이 알파벳이 아니면 그 다음 알파벳을 대문자로 처리 + 문자열이 여러 문자로 이루어졌을 때, 모든 문자들에 대해 첫글자 대문자로 변경 
- capitalize() : 문자열 첫문자를 대문자로 변경 + 맨 앞이 알파벳 아니면 대문자 처리 안함 + 문자열이 여러 문자로 이루어졌을 때 가장 첫 문자에만 변경
- join함수 : '구분자'.join(리스트) 
- split(" ")으로 분명하게 나눠주는 연습하기!!

 

 

6. [2178] 미로탐색(실버1)

- bfs + 최단 경로의 "이동칸수"가 필요한 경우, 큐에 이동횟수 같이 저장하기

- 그래프에서 노드번호로 주어지면 (N+1) 크기로, 좌표로 주어지면 N크기로 배열 만들기

- from collections import deque

- 입력이 띄어쓰기 없이 들어오면 split & int()하지 말고 그대로 담기

 

7. [2156]포도주 시식(실버1)

- top_down으로 풀 때  : idx < 0 조건과 dp[idx] != -1 조건 항상 유념하기!! dp배열에 값이 없으면 재귀 호출 값을 dp에 넣고 해당 dp배열값 return

- bottom_up으로 풀 때 : 초기 값 집어 넣을 때 N의 범위 항상 조심할 것! ex) dp[2] = ~ 로 넣었는데 N = 1인 경우도 고려할 것!

- dp[i]를 구하기 위해서 dp[i-1]값만으로는 알 수 없음(직전이 몇 번째 연속으로 먹은 값인지 모르기 때문) => dp[i-2]와 dp[i-3]을 이용해야 겠다!

'알고리즘 > 프로그래머스' 카테고리의 다른 글

(kakao) 메뉴 리뉴얼(python)  (0) 2021.09.15
[Lv2] 뉴스 클러스터링(python)  (0) 2021.08.23
[Lv2] 캐시(python)  (0) 2021.08.17
[Lv2] 짝지어 제거하기(python)  (0) 2021.08.17
[Lv2] 튜플(python)  (0) 2021.08.02