본문 바로가기

코딩테스트166

[ 파이썬(python) ] 백준 1018 - 체스판 다시 칠하기 📍 백준 1018 - 체스판 다시 칠하기 백준 1018 - 체스판 다시 칠하기 ⚡️ 나의 풀이 이 문제에서 고민해야 할 부분은 크게 다음과 같이 나뉜다. 좌측 상단이 B / W부터 시작하는 체스판을 만든다. (이때, 번갈아가면서 색칠되어있어야 함.) N * M 크기의 보드를 입력받는다. (이때, N은 세로, M은 가로) N * M 크기의 보드를 8 * 8형태로 자르고, 1번에서 작성한 두 개의 체스판의 좌표를 서로 비교한다. 좌표의 값이 서로 다르면 cnt를 증가하는데, 더 작은 값을 return 한다. 1번 방법을 좌표가 나타내는 일정한 규칙으로 구현하지 않고 내 방식대로 구현하다가 시간을 다 까먹고 구현을 하지도 못했다. 😭 😭 W가 먼저 시작하는 체스판을 만들 때 좌표를 보면 다음과 같은 규칙이 있.. 2021. 5. 24.
[ 파이썬(python) ] 백준 1436 - 영화감독 숌 📍 백준 1436 - 영화감독 숌 백준 1436 - 영화감독 숌 ⚡️ 나의 풀이 전형적인 브루트포스문제다. 6이 적어도 3개 이상 등장해야 한다. number+=1씩 증가하면서 666이 있는지 확인한다. number가 있으면, result에 추가시킨다. 코드를 작성하고 나니까 굳이 result에 추가시키지 않아도 된다는 생각을 했다. 그리고 while문 종료 조건이 가독성이 떨어져 보여서 직접 작성하지 말고 flag로 대체해야겠다는 생각을 했다. # 나의 풀이 n = int(input()) number = 665 result = [] while not len(result) >= n: if str(number).count('666') >= 1: result.append(number) number+=1 pr.. 2021. 5. 22.
[ 파이썬(python) ] 백준 9625 - BABBA 📌 백준 9625 - BABBA 백준 9625 - BABBA 💡 나의 풀이 전형적인 DP(Dynamic Programming)문제였으나, 처음에 문제 그대로 i가 증가하면 바뀌는 문자열을 새로운 배열에 넣고 마지막에 총 몇 개인지 count를 사용하여 풀다가 시간 초과 판정을 받았다. 그래서 어떤 규칙이 있는지 살펴보니까 전체 A, B 총 개수를 구할 필요는 없고 A, B의 개수를 따로따로 구하면 된다. a[i] = a[i-1] + a[i-2]인 전형적인 피보나치(Fibonacci) 수열 형태를 보였다. 나는 DP를 사용할 때 전체 k의 최대값를 선언했는데, 그럴 필요 없이 k+1만큼만 줘서 그때그때 계산해도 된다. 또, 새롭게 배운 점은 a[0] = 1, a[1] = 0 대신, 처음부터 a=[1,0]을.. 2021. 5. 21.
[ 파이썬(python) ] n * n 행렬에서 target * target 크기만큼 자르기 📍 n * n 행렬에서 target * target 크기만큼 자르기 가로세로가 동일한 n*n 행렬에서 n보다 작은 target*target 행렬만큼 잘라 출력하고 싶을 때는 다음과 같이 작성하자. 예를 들어, n = 5, target = 3일때는 다음과 같은 과정을 거친다. arr행렬을 초기화해준다. 출력 값이 제대로 나오는지 확인하기 위해 arr은 1부터 차례대로 증가하는 행렬로 초기화한다. 범위를 n으로 하는 이중 반복문을 선언한다. 이때 index오류를 방지하기 위해 n을 target-1로 빼준다. -1을 빼주지 않으면 제일 마지막 행과 열은 계산하지 않으니까 꼭 빼주도록 하자. 이중 반복문안에 이중 반복문을 한번 더 선언한다. 가독성을 위해 each_case라는 함수를 선언했는데, 중요한 점은 출.. 2021. 5. 20.
[ 파이썬(python) ] 백준 4396 - 지뢰 📍 백준 4396 - 지뢰 백준 4396 - 지뢰 ⚡️ 나의 풀이 상당히 고생한 문제다. 이 문제를 맞히기 위해 정답을 얼마나 제출했는지 모르겠다. 난이도가 실버 5 였기 때문에 쉽게 풀 줄 알았는데 큰 코 다쳤다. 처음 짰던 코드는 접근 자체를 잘 못했다. 이때까지 n*n 행렬을 초기화 시킬때 무조건 0으로 했는데, 꼭 그렇게 할 필요 없다는 생각이 이 문제를 풀면서 떠올랐다. 이 문제에 다른 모든 지점이 온점(.)으로 표시되어야하는 조건에서 result의 초기값을 .으로 해주면 됐었다. 또, 문제를 완벽하게 이해하지 못했는데, 지뢰가 있는 칸이 열렸다면 지뢰가 있으면서 열린 칸만 별표(*)로 표시하는것이 아니고, 지뢰가 있는 모든 칸이 별표(*)로 처리되어야한다. 도저히 모르겠어서 질문까지 남겼는데 .. 2021. 5. 20.