for tc in range(1,int(input())+1): N = int(input()) arr = list(map(int, input().split())) maxx=0 minn=1000000
풀지 않은 문제가 있어 뒤늦게 추가. > 1. 정류장에서 무조건 충전하여 이동할 수 있는 최대 거리를 이동한다. > 2. 이때 도달한 지점이 정류장이 아니라면(따라서 더이상 이동하지 못한다면) 현재위치를 -1하며 충전할 정류장을 찾는다. 텍스트
모든 값이 0인 10x10의 리스트를 만든 후 색칠된 색상의 값(ex 문제대로라면 빨강이 1, 파랑이 2)만큼 더해주는 방법을 사용했다. (합이 3이상인 것들을 카운트하여 출력) 입력되는 순간부터 변수로 지정한다(x1,y1,x2,y2,color)
from itertools import combinations 코드를 입력하여 조합 라이브러리를 사용했다. combinations(조합) 라이브러리와 세트로 등장하는 permutations(순열) 라이브러리의 차이에 대해 설명하자면: 해당 풀이에서 그랬듯이 조합
sort()함수를 통해 리스트를 정렬한 다음 풀이했다.
파이썬의 if A in B 코드를 사용하여 간단하게 해결한다.해당 코드로 B에 A가 포함되어 있는지를 확인할 수 있다.
찾는 대상인 str1을 set으로 바꾼다.set 형식은 중복 원소를 자동으로 제거해준다.
10,20일 경우를 제외하고(전/전전단계가 존재하지 않음) 모두 바로 전단계(-10)의 값과 전전단계(-20)*2의 값의 합을 답으로 가진다.
먼저 ''안의 문자열을 삭제하여 취급하지 않는 것부터 시작한다.입력된 문자열에 '가 있는지 확인하여만약 '가 존재한다면 쌍으로 묶어 고려하기 위해 '의 count에 2를 나눈만큼 for문을 돌리고 '가 있는 인덱스를 저장한다. (앞 쪽의 ')앞단계에서 구한 인덱스부터
연결정보를 저장할 리스트(chk)와 이어져있음을 표시해 줄 리스트(visit)를 새롭게 생성한다.방향성 그래프이므로 연결 정보를 저장할 때는 입력된 쌍 그대로만을 고려하면 된다.
입력값과 주기적으로 답변을 저장하는 리스트(res)의 끝값을 비교하여 append-pop을 반복한다.
해당 문자가 숫자인지를 판별하는 isalnum함수를 사용했다.나눗셈이나 나머지 계산을 위해 x가 무조건 더 큰 수가 되도록 하였다.
이런 류(bfs)의 문제는 대게 deque를 사용하나 단원이 스택인만큼 스택을 활용하여 풀었다.from collections import deque를 적어 deque 라이브러리를 사용할 수 있으며, deque를 사용할 경우 리스트 대신 deque()를, pop(0)대신
그룹을 나누는 함수(div)와 승자를 결정하는 함수(calc)를 생성했다.
백트래킹을 활용하여 해결한다.최소합(=최종 답변)을 저장할 변수(minn)와 계산되는 값(=최솟값과 비교할 값)을 저장할 변수(res), 방문한 열을 체크할 리스트(chk)를 사용한다.
deque의 특징 중 하나인 popleft()를 활용한다.
기존의 미로 문제에서 각 경우의 count(지나온 칸의 수)를 저장해줄 리스트(save)가 추가된다. 이동한 거리를 세는 것이므로 도착점을 제외해야한다. 구한 값에서 -1을 해 준다.
피자의 순서와 치즈양을 저장할 deque(pizza)와 화덕을 표현할 deque(hwa)를 활용한다.
방문한 노드를 체크해주는 기본값 0의 리스트(visit), 각 노드까지의 길이를 저장하는 리스트(cnt)를 활용한다.여기서 deque는 이동 노드를 저장하는 역할을 한다.
파이썬 리스트의 insert()를 사용하면 간단하게 해결할 수 있다.
for~ else문을 사용했다. for ~ else문은 for문을 모두 돌 때까지 break가 되지 않으면 else 구문이 실행되는 형태이다. 리스트 중간에 다른 리스트를 정상적으로 삽입하기 위해서는 기존리스트[삽입할 위치] = 삽입할 리스트 의 코드를 사용할 수 있
매번 숫자가 하나가 추가되어 길이가 1씩 늘어나기 때문에, 다른 문제처럼 인덱스 한계를 len(arr)-1로 잡으면 안 된다. 또한 insert는 삽입이 마지막에 일어나는 함수로 따라서 더해야할 앞뒤 값은 arr[idx-1], arr[idx+1]이 아니라 arr[i
명령어 D가 예외적으로 숫자 하나만을 입력하기 때문에 map을 통해 입력을 바로 변수로 바꾸는 것이 아닌 list 형태로 입력받았다.
1. Tree의 부모-자식 관계를 저장할 새로운 리스트를 선언하고(tree) E(간선 수)에 2를 더한만큼 공간을 생성해주는데, 1) 노드의 수는 간선+1이기 때문에 2) 계산의 수월함을 위해 (0행은 값이 비워지게 되고 1행부터 값이 들어간다.) 2의 간격을 둔 fo
정렬된 값들을 저장할 리스트(tree)와 크기비교를 위해 idx를 생성해준다. idx가 1에서부터 N까지 차근차근(정렬을 생각하지 않고 단순 입력된 대로) 값을 넣어주는 인덱스의 역할을 한다면 chk는 부모노드와 자식노드를 비교하는 역할이다. chk가 1을 넘어가면(
복사하여 sort를 한 리스트를 set처리(중복제거)하여 해결했다.
뭔가 가독성 부분에서 효율이 떨어지는 것 같기도 하고..
회문1의 leng을 for문으로 바꾸어 풀이한다. 길이는 가장 긴 것부터 짧은 순으로 진행하여 maxx에 유효값이 생기면 바로 break를 하도록 했다.
저번의 String(회문)문제와 동일한 풀이방법.
각 괄호 수를 count해서 비교하는 방법도 있지만 stack이라는 단원에 맞게 pop을 사용하였다.
ㅇ
int형을 저장할 리스트 intt와 부호를 저장할 리스트 tmp를 선언하여 변환한 뒤 계산하였다.
계산기2에서 괄호 경우를 추가했다. 괄호는 부호와 같이 tmp에 저장한다 텍스트
주어진 값을 입력하는 코드를 작성할때 split()을 붙여야할 경우와 아닌 경우를 구별할 것
미로1에서 range의 값만 100으로 바꾸면 된다.
명령어 위치를 기준으로 나머지를 파악한다.
암호문1에서 D의 명령어를 추가한다.
암호문2에서 명령어 A의 경우를 추가한다.