파이썬 84

백준 13300번 방 배정 파이썬

리뷰이 문제를 푸는데에는 많은 방법이 있겠지만 딕셔너리로 풀어보고 싶어서 딕셔너리로 풀었다.문제 풀이우선 남학생과 여학생용 딕셔너리를 생성해 주고 key값을 학년으로 설정한다. 물론 value는 0으로 초기화성별과 학년 값을 받아주고 성별이 1일경우 딕셔너리1의 학년 값을 1 올려준다. 반대일 경우 딕셔너리2 활용각 딕셔너리의 값 리스트를 받아 방의 최대인원으로 나눠준 후 math 모듈의 ceil 함수를 사용해 값을 더해준 뒤 출력참고 사항딕셔너리를 사용하면 시간복잡도에서 유리하다.정답 코드def q13300(): # 백준 13300번 방 배정 파이썬 import math n, k = map(int, input().split()) dic1 = {1: 0, 2: 0, 3: 0, 4: ..

백준 2980번 도로와 신호등 파이썬

리뷰점화식을 만드는데 애먹었지만 해당 부분을 제외하면 쉬웠다.문제 풀이도로의 길이 + 1 만큼의 길이를 가진 배열을 생성해 준다.도로에 진입한 순간 사이클이 진행되므로 while문의 초반에 시간을 1더해준다.시간을 빨간불 유지시간 + 초록불 유지시간으로 나눈 나머지가 빨간불 유지시간 보다 적다면 빨간불이다. 길을 0으로 변경시켜 이동을 막는다. 만약 반대라면 길을 1로 변경하여 이동할 수 있게 처리해 준다.참고 사항도로의 길이와 신호등의 정보의 범위가 좁아서 망정이지 더 길었다면 통과하지 못할 것 같다. 코드 최적화가 필요해 보임정답 코드def q2980(): # 백준 2980번 도로와 신호등 파이썬 n, l = map(int, input().split()) dp = [1] * (l + ..

백준 2578번 빙고 파이썬

리뷰구현 문제는 너무 어렵고 오래걸린다.문제 풀이우선 빙고판과 숫자판 그리고 순서 인덱스를 초기화 해준다. for문이 많이 발생할 것으로 예상되어 함수를 사용해 주었다.call_number 함수 : 리스트와 숫자를 받아와 해당 리스트에서 동일한 숫자 발견 시 해당 숫자를 0으로 바꾸고 리턴check_bingo 함수 : 행과 열, 대각선의 숫자가 모두 0인지 체크 후 빙고의 갯수 리턴매번 번호 호출 시마다 순서를 증가시켜 주고 빙고판에서 해당 숫자를 0으로 만들어 준 뒤 빙고의 숫자가 3개 이상이 될 경우 번호를 출력 하고 리턴하는 것으로 마무리 하였다.참고 사항for문이 많아 함수를 사용하는 것을 추천한다.정답 코드def q2578(): # 백준 2578번 빙고 파이썬 def call_numb..

백준 10157번 자리배정 파이썬

리뷰실버4 문제가 맞나 싶을 정도로 어려웠다. 구현 문제는 시간이 오래 걸려 기피했었는데 자주 풀어봐야 할 것 같다.문제 풀이1. 2차원 배열을 r * c 크기로 생성해 준다.2. x, y 좌표를 초기 시작 위치인 0, 0으로 초기화3. 방향을 나타낼 배열을 생성해 주고 초기 index값을 할당해 준다. 처음엔 y방향으로 1씩 이동이니 (0, 1)이 되어야 한다.4. 관객의 번호를 나타낼 변수를초기화 해 준다.찾고 싶은 관객의 번호가 자리를 벗어나면 바로 print(0)후 리턴해 주면 된다. 아닐 경우 while 루프를 돌아 관객의 번호가 지정된 자리를 찾을 경우 x + 1, y + 1값을 리턴해 준다. 우선 x, y 좌표에 자리를 지정해 주고 다음 x, y 좌표를 찾아 준다.현재 진행 방향으로 이동 후..

백준 3985번 롤 케이크 파이썬

리뷰문제가 잘 이해가 되지 않는다면 예제의 이미지를 보면 쉽게 접근할 수 있는 문제였다.문제 풀이입력값을 받아오고 롤케이크 길이 +1만큼의 배열을 생성해준다. (롤케이크의 길이가 1부터 시작이기 때문)가장 많은 조각을 받을 것으로 기대했던 방청객과 실제로 가장 많은 조각을 받은 방청객용 변수를 따로 초기화 해준다.이 때 값 비교용 변수 하나 방청객의 인덱스용 변수 하나를 각각 초기화 해주었다. for문을 1부터 시작하여 i를 방청객 인덱스로 활용해 주고 k - p값이 이전의 값들 보다 클 경우 i 값은 가장 많은 조각을 받으로 기대했던 방청객의 인덱스가 된다. (방청객 인덱스는 오름차순 이므로 자동으로 번호가 가장 작은 값이 할당된다.) 이후 for문을 한번 더 개행해 줘 롤케이크에 방청객 번호가 할당되..

백준 2628번 종이자르기 파이썬

리뷰처음 문제를 어떻게 접근해야 할지 막막했다. 2차원 배열을 생성해서 insert를 해줄까? 싶다가 너무 산으로 가는 것 같아서 조금 더 간단하게 생각해 보도록 했다.문제 풀이종이의 크기 x, y를 받고 가로와 세로 배열을 초기화 해 준다. 각 배열에 초기 인덱스값 0과 x 또는 y를 넣어주고 이후 자르는 좌표를 각 배열에 append 해준다. 모든 입력을 받았다면 가로 세로 배열을 각각 오름차순으로 정렬해 주고 해당 배열 내에서 길이가 가장 긴 값을 구해준 후 서로 곱해주면 최대 넓이가 된다.가장 긴 값을 구하는 방법은 가로 세로 최대치를 저장할 변수를 초기화 해준 다음 정렬된 배열 내에서 인접한 두 인자의 차와 기존의 최대치를 비교하여 더 높은 값을 최대치로 갱신해 주면 된다.참고 사항종이의 크기를..

백준 8320번 직사각형을 만드는 방법 파이썬

리뷰처음엔 조금 막막했으나 알고리즘 분류가 수학인 만큼 점화식이 있을 거라고 생각했고 규칙을 찾아낸 후엔 문제를 쉽게 풀 수 있었다.문제 풀이n12345678910111213result12356891113151619201부터 13까지의 수를 대입해 보았을때 처음엔 피보나치 수열인가? 생각했으나 별다른 규칙성을 찾지 못했다. 그래서 노가다를 시작했다.n■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■n // 2 - 1■■■■■■■■■■■■■■■■■■      n // 3 - 2■■■■■■■■■        위의 표는 N이 9일때의 직사각형을 만들 수 있는 경우의 수이다. N이 4일때와 9일때 새로운 모습의 정사각형을 만들 수 있다는 것을 깨닫고 위와 같은 점화식을 세울 수 ..

백준 10163번 색종이 파이썬

리뷰상위 난이도 문제인 색종이와 색종이-2 보다 평면의 길이가 커서 시간 초과가 나지 않을까 했지만 다행히 시간초과가 나진 않았다. 해당 문제를 이해하고 색종이와 색종이-2에 접근한다면 해당 문제들을 쉽게 풀 수 있을 것 같다.문제 풀이마지막으로 들어온 종이는 온전히 자기 넓이를 가져야 하므로 각 좌표와 넓이를 리스트로 받아와 준 후 한번 reverse를 해 주었다. 1001 * 1001 크기의 2차원 배열을 생성해준 후 해당 위치의 값이 0일 경우 1로 변경해줌과 동시에 넓이를 1 더해주었다. 그리고 내부 for문이 종료될 때 얻은 넓이 값을 별도의 리스트에 저장, 모든 종이의 넓이를 구해준 후 넓이가 저장된 리스트를 다시 reverse하여 각각의 넓이를 출력해 주었다.추천 반례없음정답 코드def q1..

728x90