Python
![[python] SWEA - 3752. 가능한 시험 점수](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb3I91v%2FbtqGklRyt7z%2FTV396B82zOiiU0KOkznxC1%2Fimg.png)
[python] SWEA - 3752. 가능한 시험 점수
문제 해결 1. D4 | DP 2. 얻을 수 있는 최대점수를 길이로 하는 리스트를 만든다 3. 리스트안의 값은 내가 점수를 얻을 수 있으면 1, 없으면 0으로 한다 4. 점수를 하나씩 받아서 리스트를 뒤에서부터 탐색한다 (1) 1을 만나면(내가 이미 얻을 수 있는 점수 ex. lst[3] == 1 이면 3점은 이미 얻을 수 있는 점수이다.) 내가 꺼낸 점수를 더해서 그 지점을 1로 만들어준다.(ex. score == 2 이면 lst[5] = 1) 5. 리스트에서 1의 갯수를 세어주면 정답. 💨 풀이 예시] 새로 받는 점수는 2, 3, 5이다. 얻을 수 있는 점수는 리스트는 lst = [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] 이렇게 구성한다. (0점은 처음부터 가능하므로 0번 인덱스의 ..
![[python] 프로그래머스 - 동굴 탐험 (2020 카카오 인턴십)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdBGjpO%2FbtqF15BzRsE%2FpttZUbCIqRyHjoR45hD1bK%2Fimg.png)
[python] 프로그래머스 - 동굴 탐험 (2020 카카오 인턴십)
문제 해결 1. 그래프 문제 2. 주어진 path 로 인접리스트를 만든다. 3. 주어진 order 로 딕셔너리를 만든다. (1) a 를 방문해야 b 를 방문할 수 있다. (2) a를 키, b를 밸류로 하는 딕셔너리를 만든다 | a를 방문했을 때 b를 방문할 수 있다 라는 것을 찾기 위해| (3) b를 키, a를 밸류로 하는 딕셔너리를 만든다 | b를 방문하려고 하는데 a를 이미 방문했는지 알아보기 위해| (4) a가 0인 경우(선행 조건이 0번방을 방문하는 것) 이므로 값을 0으로 해준다.) (5) b가 0인 경우(0번방을 방문하기 위해 다른 방을 방문하고 와야 하므로 처음부터 방에 들어가지 못한다.) 4. visited 배열(0과 1)을 만든다. 방문했는지 안했는지 알아보기 위해 5. 큐를 만들어 BF..
![[python] 프로그래머스 - 키패드 누르기 (2020 카카오 인턴십)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbGBoXA%2FbtqFPIdV0Ub%2Fj1KsC9tZvXyGpMvkgjTeTK%2Fimg.png)
[python] 프로그래머스 - 키패드 누르기 (2020 카카오 인턴십)
문제 해결 1. 키패드 모양대로 2차원 배열과 현재 왼손의 위치, 오른손의 위치, 누른 손을 누적할 변수를 생성 2. 1,4,7은 왼손, 3,6,9는 오른손을 사용하여 누르고, 그 위치로 이동한다. 3. 2,5,8,0의 경우 누를 번호에서 현재 양손의 위치까지의 거리를 구해서 거리가 짧은 쪽을, 거리가 같을 경우 어느손잡이인지에 따라 그 손으로 누르고 이동한다. (1) 눌러야할 번호의 위치를 구하고 BFS 탐색을 한다. (2) 현재 손까지의 거리를 구한다. (3) 양손까지의 거리를 비교한다. 😂 난이도는 카카오 코테 Lv1. 다른 분의 풀이를 보면 1차원 배열에서 숫자는 인덱스로, 위치는 튜플 형태로 값으로 넣어서 푼다. ex) 2차원 배열 상에서0번의 위치는 3,1이고 , 1번의 위치는 0,0이다. 그..
![[python] 프로그래머스 - 수식 최대화 / 보석 쇼핑 (2020 카카오 인턴십)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FFDGwv%2FbtqFLtWT7vY%2FcUskYkSC8lpV25DjB51GOK%2Fimg.png)
[python] 프로그래머스 - 수식 최대화 / 보석 쇼핑 (2020 카카오 인턴십)
1. 수식 최대화 문제 해결 1. 먼저 주어진 수식을 숫자와 연산자로 구분하여 분리 (1) 빈 배열과 숫자를 자리수마다 하나씩 쌓아 놓을 변수를 만들고 (2) 주어진 수식을 for 문을 돌린다. (3) 숫자가 나오면 | ex) 350일 경우 > tmp에 3을 더하고, 5를 더하고 0을 더해서 tmp='350' 을 만든다 (4) 연산자가 나올 경우 만들어 놓은 숫자(tmp)와 연산자를 차례로 배열에 추가 한다. tmp는 다시 초기화 (5) 3,4번을 반복하고 마지막 숫자는 다음에 올 연산자가 없으므로 끝날 때 배열에 추가해준다. 2. 연산자 우선순위 구해서 계산하기 (1) 연산자 3가지를 만들고, 퍼뮤테이션 함수를 이용해 연산자 3가지에 대한 순열을 생성 (2) 만들어 놓은 수식 배열은 여러번 계산(연산자..
![[python] SWEA - 1289. 원재의 메모리 복구하기](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbcY7rZ%2FbtqFKMBcYuP%2FMlfpcL4CEoxyMvVhbsI7PK%2Fimg.png)
[python] SWEA - 1289. 원재의 메모리 복구하기
1. 원재의 메모리 복구하기 문제 해결 1. 인덱스 다루기. D3 2. for문으로 처음부터 끝까지 차례차례 검사한다. 3. 초기 메모리 값(init) 과 복구할 메모리 (n) 의 값을 차례차례 비교하며 4. 값이 다를 경우 다른 지점부터 끝까지 n의 값을 바꿔준다. 5. 이 때 카운트를 하나 씩 더해준다. 🌞 소스 코드 T = int(input()) for tc in range(1, T+1): init = list(input()) n = ['0']*len(init) cnt = 0 for i in range(len(n)): if n[i] != init[i]: n[i:] = init[i]*len(n[i:]) cnt += 1 print('#{} {}'.format(tc, cnt)) 출처: SW Expert ..
![[python] SWEA - 1961. 숫자 배열 회전/ 1970. 쉬운 거스름돈/ 10059. 유효기간](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FetZKNs%2FbtqFGMgy2HG%2FnetZ35mvXzXqUIxihKWkjK%2Fimg.png)
[python] SWEA - 1961. 숫자 배열 회전/ 1970. 쉬운 거스름돈/ 10059. 유효기간
1. 숫자 배열 회전 문제 해결 1. 2차원 배열 다루기. D2 2. 90도로 회전시키는 것만 코드를 완성하면 나머지는 90도 돌린것을 또 돌리면 된다. 3. 이번에 푼 방법은 1행에 있는 모든 값을 임시배열에 넣어두고 거꾸로 해준다음 하나씩 쌓아준다. 🌧 이것 말고도 많은 방법이 있는 것으로 기억한다. 😶 소스 코드 T = int(input()) for tc in range(1, 1+T): n = int(input()) lst = [input().split() for _ in range(n)] # 90 도 회전 lst_90 = [] for j in range(n): tmp = [] for i in range(n): tmp.append(lst[i][j]) tmp.reverse() lst_90.append..