본문 바로가기

코딩테스트166

[ 파이썬(python) ] 백준 13335 - 트럭 📍 백준 13335 - 트럭 백준 13335 - 트럭 ⚡️ 나의 풀이 문제 분류는 시뮬레이션이었는데 실제로 일어날 수 있는 일을 코드로 구현 하니까 흥미로웠다. 또, 실버 1임에도 불구하고 문제가 어려웠는데 구현 조건이 생각보다 까다로웠기 때문이다. 문제흐름은 다음과 같다. 현재 다리(bridge)무게 + 넘어 올 트럭의 무게가 다리 하중보다 작으면 넘어 올 수 있고 그렇지 않으면 넘어 올 수 없다. 다리길이를 지난 트럭은 다리를 벗어난다.(pop) 이때, 현재 다리무게는 방금 다리를 벗어난 트럭의 무게를 빼줘야 한다. 다리에 트럭이 없을 때까지 반복한다. 1번 조건은 잘 생각했는데 2번 조건에서 트럭이 다리를 건너가고 나서 트럭의 무게만큼 현재 weight를 빼줄 생각을 못해서 오답판정을 받았다. 또한.. 2021. 6. 25.
[ 파이썬(python) ] 리스트 중 front, back에서부터 target index까지 어느쪽이 더 가까운지 판단하기 📍 리스트 중 front, back에서부터 target index까지 어느 쪽이 더 가까운지 판단하기 길이가 10인 리스트 arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 일 때, target_index = 3(값은 4)는 앞에서부터 더 가까운지 아니면 뒤에서부터 가까운지 판단하고 싶을 때 다음과 같은 코드를 작성하면 된다. 응용문제로는 백준 1021 - 회전하는 큐가있다. front와 back을 나누는 기준은 len(arr) // 2이다. 만약, target_index가 기준보다 작다면 앞에서부터 가깝고, 기준보다 크다면 뒤에서부터 세는 편이 더 빠르다. n = 10 arr = [i for i in range(1, n+1)] target_index = 3 # 4 if arr.inde.. 2021. 6. 25.
[ 파이썬(python) ] 백준 1966 - 프린터 큐 📍 백준 1966 - 프린터 큐 백준 1966 - 프린터 큐 ⚡️ 나의 풀이 문제가 잘 이해가 되지 않아 4 ~ 5번 정도 다시 봤다. 결론적으로 현재 index와 동일한 우선순위값이 제일 클 때 cnt+=1을 해주면 된다. 다른 테스트 케이스는 괜찮았는데 중복된 우선순위가 있는 문서를 처리할 때 고민을 많이 했다. 예제 입력 1 - 테스트케이스 중 제일 마지막 1, 1, 9, 1, 1, 1을 예로 들어보자. (그림, 글씨 양해 부탁드립읍니다.) 자신보다 높은 우선순위가 없을 때까지 회전한다.(이때는 cnt가 올라가지 않는다. why? 인쇄를 하지 않았기 때문) pop 할 위치(가장 첫 번째 index)에 위치했을 때 해당 값의 우선순위가 제일 높다면 pop처리하고 cnt+=1 해준다. 2번 과정에서 만.. 2021. 6. 24.
[ 파이썬(python) ] 백준 2563 - 색종이 📍 백준 2563 - 색종이 백준 2563 - 색종이 ⚡️ 나의 풀이 색종이가 붙은 검은 영역의 넓이를 구하는 문제라서 처음에 (100 * n) - 색종이끼리 겹치는 넓이로 구하면 될 줄 알았는데 색종이가 겹치는 경우 + 겹치지 않는 경우 등등.. 경우의 수가 많아 이 방법은 힘들다고 생각했다. 2차원 배열을 선언한 다음 가로, 세로의 길이를 1로 초기화해주는 방법을 봤는데, 이런 방법도 있구나 하며 감탄했다. 그래서 white_board[i][j] += 1로 선언한 다음 300 - cnt >= 2로 구했더니 오답판정이 나왔다. 결론적으로 1씩 누적할 필요 없이 전체 사각형이 그려진 값(1)만 출력하면 됐었다. n = int(input()) white_board = [[0] * 100 for _ in r.. 2021. 6. 23.
[ 파이썬(python) ] 백준 4458 - 첫 글자를 대문자로 📍 백준 4458 - 첫 글자를 대문자로 백준 4458 - 첫 글자를 대문자로 ⚡️ 나의 풀이 제일 첫 글자에 upper() 함수를 이용해 대문자로 바꾸고 나머지 index는 그대로 더해준다. n = int(input()) for _ in range(n): s = input() temp = s[0].upper() ans = temp + s[1:] print(ans) 2021. 6. 22.