시뮬레이션

    [python] 백준 - 21608. 상어 초등학교

    [python] 백준 - 21608. 상어 초등학교

    🤔문제 해결 시뮬레이션 학생: *친구들 딕셔너리를 만든다. 문제의 크기가 크지 않기 때문에 이중 포문으로 교실 전체를 탐색 좋아하는 사람 옆자리와 빈자리 개수를 각각 체크해준다. 좋아하는 사람 옆자리 수 빈자리 수 순서로 체크해가며 큰 값을 업데이트 해준다. 인덱스가 작은 값부터 탐색하기 때문에 같다면 행번호, 열번호가 작은 자리가 선택되게 된다. 다 찾았으면 교실 전체를 돌며 만족도 조사 끝 💻소스 코드 import sys input = sys.stdin.readline def is_in(ix, iy, n): if 0 max_blank): # 1. 좋아하는 사람 옆자리, 2. 같으면 빈자리 max_blank = blank max_like = like loc = i, j x, y = loc classro..

    [python] 백준 - 17140. 이차원 배열과 연산

    [python] 백준 - 17140. 이차원 배열과 연산

    🤔문제 해결 G4 | 시뮬레이션, 구현 문제를 이해하는데 시간이 좀 걸렸다. k값이 맞는지 확인하고 아니라면 시간을 +1 증가시킨다. R연산인지 C연산인지 확인한다. R 연산일 경우 각 행의 숫자와 해당 숫자의 개수를 리스트나 튜플 형태로 저장한다. [(1, 1), (2, 1)] 이런식으로 sort를 이용해 정렬한다. 튜플을 풀어서 숫자 하나하나의 형태로 리스트에 저장하고 나머지 길이를 0으로 채워넣는다. C 연산일 경우 행과 열을 바꿔서 위의 과정을 똑같이 진행한 후 다시 행과 열을 바꿔준다. 💻소스 코드 def is_k(): if r - 1 < len(arr) and c - 1 < len(arr[0]): if arr[r - 1][c - 1] == k: return True return False de..

    [python] 백준 - 14719. 빗물

    [python] 백준 - 14719. 빗물

    🤔문제 해결 G5 | 구현, 시뮬레이션 며칠 전 nhn 코테 문제랑 비슷한 문제. 그 때는 자바로 풀었기도 하고, 더 복잡하게 푼거같다. 딱히 어려운 기술을 요구하는 문제는 아니다. 오른쪽으로 가면서 자신보다 높거나 같은 블럭을 찾는다. 가는 중에 자신보다 낮지만가장 큰 놈을 찜해 놓는다. 위의 과정이 끝나면 양쪽의 블럭중 낮은 블럭 만큼의 빗물을 사이의 블럭에 채운다. 💻소스 코드 def find_block(x: int) -> int: # 오른쪽으로 가면서 자신보다 크거나 같은 블럭을 찾는다. # 가는 중에 자신보다 작지만 그 중에 가장 큰 놈을 찜해 놓는다. max_block = [0, 0] for j in range(x + 1, W): if block[j] >= block[x]: return j i..