본문 바로가기

CodingTest

(238)
[ BOJ / 파이썬 ] 7576 토마토 / 풀이 1 / from collections import deque m, n = map(int, input().split()) tomatoes = [list(map(int, input().split())) for _ in range(n)] dx = [0, 0, -1, 1] dy = [-1, 1, 0, 0] ripped = [[False] * m for _ in range(n)] q = deque([]) day = 0 def bfs(q): new_q = deque([]) while q: x, y = q.pop() for i in range(4): nx = x + dx[i] ny = y + dy[i] if 0
[ BOJ / 파이썬 ] 2178 미로 탐색 / 제출 1 / 첫 제출에 틀렸습니다. 가 나와서 당황했었다. 잘 .. 한 것 같은데 뭐지.. 복사하면서 줄 바꿈 등이 잘 못 옮겨졌었던 것이었습니다. 동일 소스코드를 줄정렬한 것이 아래 코드입니다. / 제출 2 / ### from collections import deque n, m = map(int, input().split()) board = [list(map(int, input())) for _ in range(n)] visited = [[False] * m for _ in range(n)] visited[0][0] = True q = deque([[0, 0]]) # 하 우 상 좌 dx = [1, 0, -1, 0] dy = [0, 1, 0, -1] # n-1, m-1 도착할 때까지 최단거리 whi..
[ BOJ / 파이썬] 1926 그림 / 제출 1 / from collections import deque #세로, 가로 n, m = map(int, input().split()) board = [list(map(int, input().split())) for _ in range(n)] dx = [1, 0, -1, 0] dy = [0, -1, 0, 1] visited = [[False]*m for _ in range(n)] q = deque([]) def bfs(): cnt = 0 while q: cnt += 1 x, y = q.pop() for i in range(4): nx = x + dx[i] ny = y + dy[i] if 0
[ BOJ ] 15649 N과 M 백트래킹 관련 문제를 찾다가 풀이한 문제입니다. itertools의 permutation으로 풀면 더 쉬울 것 같은데, 목적이 있어 백트래킹으로 제출했습니다. 코드와 설명 참고. https://veggie-garden.tistory.com/24 [Python] 백트래킹 (+ DFS와 차이) 백트래킹이란? 백트래킹이란 현재 상태에서 가능한 모든 경로를 따라 들어가 탐색하다, 원하는 값과 불일치하는 부분이 발생하면 더 이상 탐색을 진행하지 않고 전 단계로 돌아가는, 즉 이름 그 veggie-garden.tistory.com / 백트래킹 / # 백트래킹 구현 n, m = map(int, input().split()) ans = [] def back(): if len(ans) == m: print(" ".joi..
[ BOJ ] 스타트와 링크 / 제출 1 / from itertools import combinations n = int(input()) s = [list(map(int,input().split())) for _ in range(n)] teamA = list(combinations(range(n), n//2)) teamB = [] for a in teamA: b = [] for i in range(n): if i not in a: b.append(i) teamB.append(tuple(b)) diff = 100 for a, b in zip(teamA, teamB): levA = 0 levB = 0 playerA = list(combinations(a, 2)) playerB = list(combinations(b, 2)) for i,..
[ BOJ ] 구슬 탈출 2 / 구현 1 / n, m = map(int, input().split()) board = [list(input()) for _ in range(n)] for i in range(n): for j in range(m): if board[i][j] == 'R': red = [i, j] elif board[i][j] == 'B': blue = [i, j] elif board[i][j] == 'O': hole = [i, j] movePossible = True count = 0 dx = [-1, 1, 0, 0] dy = [0, 0, -1, 1] def roll(i, ball): nx = ball[0] + dx[i] ny = ball[1] + dy[i] if board[nx][ny] != '#': return [..
[ 프로그래머스 ] 짝지어 제거하기 / 제출 1 / def solution(s): answer = -1 s = list(s) strStack = [] for char in s: if not strStack: strStack.append(char) else: if strStack[-1] == char: strStack.pop() return int(not bool((strStack))) 채점 결과 정확성: 59.7 효율성: 39.8 합계: 99.5 / 100.0 바로 구현 방식이 떠오르고 예제도 쉽게 풀려 바로 제출했는데 정확성의 테스트 케이스(13)를 하나 통과하지 못했습니다. 자만이었던 것 같습니다. LV1을 풀고 와서 이 문제도 들이대면 풀릴 줄 알았던건 지 .. 수정해보도록 하겠습니다. / 제출 2 / def solution(s): ..
[ 프로그래머스 ] 서울에서 김서방 찾기 / 제출 1 / def solution(seoul): kimLocation = seoul.index('Kim') return '김서방은 ' + str(kimLocation) + '에 있다' 채점 결과 정확성: 100.0 합계: 100.0 / 100.0 프로그래머스 연습 문제로 제공되는 LV1문제는 원래 간단한 것 같습니다. 기업 기출이었던 같은 난이도 문제와는 결이 확실히 다릅니다. 다만, 계속 주의해야할 것은 자바스크립트와 파이썬을 오가면서 사용하다 보니 서로의 문법이나 메서드 등이 헷갈릴 때가 있습니다. 이번에 그런 실수를 했는데요. 자바스크립트의 indexOf를 사용해 특정 단어의 인덱스 값을 받으려고 해서 에러가 떴습니다. AttributeError: 'list' object has no attr..
[ 프로그래머스 ] 문자열 내 p와 y의 개수 / 제출 1 / def solution(s): pCount = 0 yCount = 0 for char in s: if char == 'p' or char == 'P': pCount += 1 elif char == 'y' or char == 'Y': yCount += 1 if pCount == 0 and yCount == 0: return True elif pCount == yCount: return True else: return False 채점 결과 정확성: 100.0 합계: 100.0 / 100.0 정말 간단한 문제였습니다. 문제 이해하는 데에 별 다른 시간이 소요되지 않는 문제였던 것 같습니다. 대신 어떻게 다양한 방식으로 언어를 활용해볼 지(문법을 다양하게 적용해볼 지) 생각해 볼 수 있을 것 같..
[ 프로그래머스 ] 스킬체크 탄탄한 비기너 오랜만에 파이썬으로 코딩테스트 문제를 푸려고 하니 자바스크립트 문법이랑 헷갈려서 조금 버벅였습니다. 코딩테스트 문제 아이디어 떠올리는 것 자체도 머릿 속에서 구조가 바로 안 잡히기도 했습니다. 다행히 낮은 난이도의 문제라서 적절한 시간 내에 풀이할 수 있었습니다. 첫 번째 문제는 10분, 두 번째 문제는 27분이 걸렸습니다. 두 문제 다 문자열을 이용한 문제였습니다. 첫 번째 문제 def solution(s): sList = list(map(int, s.split(" "))) answer = str(min(sList)) + " " + str(max(sList)) return answer 순간적으로 map함수의 구조가 생각나지 않았습니다. 한동안 집중적으로 Javascript를 공부하고 있어 JS의 Arr..