구현 26

[n2477] 참외밭 in python

큰 정사각형에서 작은 정사각형을 빼주면 넓이를 구할 수 있다는 걸 발견하고 그 값을 구해서 K를 곱해주는 방식으로 구현을 하였다. 작은 정사각형의 넓이를 구하는 과정에서 살짝 헤맸으나 최장길이의 값의 인덱스를 활용하면 금방 구할 수 있다. k = int(input()) array = [list(map(int, input().split())) for _ in range(6)] longW = 0 longH = 0 longWidx = 0 longHidx = 0 shortW = 0 shortH = 0 # 왼쪽 : 2, 오른쪽: 1, 위 : 4, 아래 : 3 # longW => 왼쪽, 오른쪽 탐색 # longH => 위, 아래 탐색 for idx, temp in enumerate(array): if temp[0]..

[n1236] 성 지키기 in python

처음에는 행은 행 따로 열은 열 따로 체크를 해줘야겠다라는 생각이 떠올랐다. 행은 x가 아예 없는 행의 개수를 세어주고 마찬가지로 열도 x가 아예 없는 열의 개수를 세어준다 이렇게 구한 개수중에 큰 값을 출력해주면 된다. 모든 행과 열에 최소한 한 명 이상의 경비원이 배치되어야 한다. 지금 위에서 구한 건 행과 열마다 각각 배치되어야할 경비원의 수를 구한것이다. 만약 행에 있어야할 경비원의 수가 2이고 열에 있어야할 경비원의 수가 3이라고 하자. 문제에서는 모든 행과 열에 경비원이 있어야한다고 했으니까최소한 3명이 있어야 위 조건을 만족할 수 있다. 따라서 max함수를 이용해서 구해주는 것이다. n, m = map(int, input().split()) array = [input() for _ in ra..

[n14503] 로봇 청소기 in python

문제에 나와있는 순서대로만 구현하면 풀리는 문제! 빈칸 : 0, 벽 : 1, 청소한 칸 : 2로 구분하였다. 처음에는 청소한 구역도 1로 처리했는데 이렇게 하면 2번의 c,d조건을 판별할 수 없었다. 그리고 1번이랑 2번을 각각 독립적으로 움직이게끔 하는 과정이 살짝 버거웠다 ㅎ.. 그리고 % 연산자를 활용해야 하는 부분을 잘 기억해야한다.. 매번 헷갈리지만 ^0^ 왼쪽 방향으로 돌릴 땐 (d+3)%4로 해주면 되는데, d에 3을 더하는 이유에 대해 알아야 앞으로도 사용해먹을 수 있을 것 같아서 상세하게 풀어써보기! 방향은 0, 1, 2, 3 이렇게 있다. 3에서 왼쪽으로 움직이면 2가 되어야하는데 이때는 -1을 해주면 된다. 그러나 문제가 있다. 0에서 왼쪽으로 움직이면 방향은 3이 되어야한다. 그래서..

[n1292] 쉽게 푸는 문제 in python

최대한 반복문을 줄이고자 했던 나의 노오력.. temp값이 1이면 반복문 1번 2이면 반복문 2번 이런식으로 answer 배열에 값을 채워넣었다! [1,2,2,3,3,3...] 그래서 answer 길이가 끝을 나타내는 정수(입력값)보다 커지면 반복문을 종료하고 합을 도출해내는 방식으로 구현하였다. f, e = map(int, input().split()) temp = 1 answer = [] while len(answer) < e: for _ in range(temp): answer.append(temp) temp += 1 print(sum(answer[f-1:e]))

[n1063] 킹 in python

문제 이해를 잘못해서 시간을 꽤 소요했다 ㅠㅠ 킹 도착 위치에 돌이 잇으면 그때만 킹과 돌의 위치를 모두 변경하는 것이고 돌이 도착위치에 없다면 킹의 위치만 움직여주면 된다. 이동 방향은 dictionary, index를 이용했다. ord : 65 -> A chr : A -> 65 # T,RT,R,RB,B,LB,L,LT dx = [-1, -1, 0, 1, 1, 1, 0, -1] dy = [0, 1, 1, 1, 0, -1, -1, -1] dic = {'T': 0, 'RT': 1, 'R': 2, 'RB': 3, 'B': 4, 'LB': 5, 'L': 6, 'LT': 7} king, dol, n = input().split() king = list(king) # 열, 행 dol = list(dol) # 열, ..

[n11504] 돌려 돌려 돌림판 in python

ex[0]은 x의 맨 앞자리 수 ey[0]은 y의 맨 앞자리 수 new_array를 만들어서 idx 에러 방지함 사실 index를 어떤식으로 처리해야 하나 고민했음. 예제1) array가 [3 7 8 3 1 9 2 7]라고 생각해본다. m = 3 x= 200 y=311 z가 x보다 크면서 같고, y보다 작으면서 같을 경우에만 카운트를 진행한다. 따라서 x의 맨 앞자리 수 2와 y의 맨 앞자리수 3을 이용하면 손쉽게 값을 구할 수 있다. 리스트에서 2의 위치를 전부 찾는다. 6번째 위치에서부터 시작해서 총 3번의 이동을 통해 z를 만들어야한다. 그리하여 z의 값은 2 7 3 7이 리스트의 맨끝이니까 앞으로 다시 돌아가야하는데 이 과정을 코드로 작성하니 좀 지저분해서 new_array를 만들었다. array..

[n1411] 비슷한 단어 in python

(풀이) 조합을 이용해서 일단 경우의 수를 먼저 뽑았다. 그리고 두 개의 리스트를 이용하여 탐색을 진행한다. (단어 A와 단어 B가 일대일 관계여야한다는 거!) ex) aa ab A B a - a 다음 문자열 탐색에서 a 는 무조건 a랑 이어져야 한다. a - b a랑 a랑 이어져야 하는데 a랑 b랑 이어져서 카운트는 하지 않는다. ex) abca zbxz A B a - z 다음 문자열 탐색에서 a 는 무조건 z랑 이어져야 한다. b - b 다음 문자열 탐색에서 b는 무조건 b랑 이어져야 한다. c-x 다음 문자열 탐색에서 c 는 무조건 x랑 이어져야 한다. a - z a가 z랑 잘 연결되었으니까 문제 없음! 이 예시 같은 경우에는 결과값에 포함 from itertools import combinatio..