본문 바로가기

코딩테스트34

[백준 알고리즘/Python] 백준 14503번 로봇 청소기, 파이썬 설명 1. 문제 출처 https://www.acmicpc.net/problem/14503 14503번: 로봇 청소기 로봇 청소기가 주어졌을 때, 청소하는 영역의 개수를 구하는 프로그램을 작성하시오. 로봇 청소기가 있는 장소는 N×M 크기의 직사각형으로 나타낼 수 있으며, 1×1크기의 정사각형 칸으로 나누어 www.acmicpc.net 2. 생각정리 - 현재방향을 기준으로 다음 방향을 반환해주는 함수 작성하기 - 현재방향 기준으로 뒤쪽 위치를 반환해주는 함수 작성하기 - 나머지는 그냥 하라는대로 하면 될 듯 함 3. 조각코드 현재방향 기준으로 다음 방향 반환해주는 함수 dx = [-1,0,1,0] dy = [0,1,0,-1] def rotate(cd): nd = 0 if cd == 0: # d가 북이면 nd는 .. 2022. 3. 27.
[백준 알고리즘/Python] 백준 15686번 치킨 배달, 파이썬 설명 1. 문제 출처 https://www.acmicpc.net/problem/15686 15686번: 치킨 배달 크기가 N×N인 도시가 있다. 도시는 1×1크기의 칸으로 나누어져 있다. 도시의 각 칸은 빈 칸, 치킨집, 집 중 하나이다. 도시의 칸은 (r, c)와 같은 형태로 나타내고, r행 c열 또는 위에서부터 r번째 칸 www.acmicpc.net 2. 생각정리 - 최대 m개를 어떻게 살릴지 구하는 조합이 필요함 - 거리를 체크하는 함수를 따로 빼놓기 - 나머지는 반복문으로 체크하면 될 듯 3. 조각코드 #거리 체크 def cal_bbq(hx,hy, bx,by): return abs(hx-bx) + abs(hy-by) # m개 구하는 조합 from itertools import combinations g.. 2022. 3. 27.
[백준 알고리즘/Python] 백준 112100번 2048 (Easy), 파이썬 설명 1. 문제 출처 https://www.acmicpc.net/problem/12100 12100번: 2048 (Easy) 첫째 줄에 보드의 크기 N (1 ≤ N ≤ 20)이 주어진다. 둘째 줄부터 N개의 줄에는 게임판의 초기 상태가 주어진다. 0은 빈 칸을 나타내며, 이외의 값은 모두 블록을 나타낸다. 블록에 쓰여 있는 수는 2 www.acmicpc.net 2. 생각 정리 - 오른쪽, 왼쪽, 위쪽, 아래쪽 이동을 전부 다 구현하기는 너무 복잡함. - 따라서, 행렬을 회전시켜서 하나의 이동(왼쪽)으로만 구현할 것임. - 최대 5번 이동은 중복 순열을 사용하면 될 듯 함. 3. 조각 코드 - 행렬을 시계, 반시계 방향으로 회전하는 코드. 기억해두면 유용하게 쓰일 때가 많음 # 행렬 시계방향 90도 회전 def.. 2022. 3. 23.
프로그래머스 :: N-Queen, Javascript 😺 풀어 볼 문제 프로그래머스 :: N-Queen 코딩테스트 준비하면서 세 번 정도 풀었던거 같은데, 왜 매번 풀 때마다 새로운지 모르겠다. 아는게 아니라 익숙했기 때문에 그런거 같다. 이번 기회에 확실하게 알기위해 정리 해 놓으려고 한다. 간단한 풀이 설명 대표적인 백트래킹 문제이다. 재귀를 통해서, 조건에 맞으면 퀸을 놓고 조건에 맞지 않으면 다음 것으로 탐색을 진행하면 된다. 말은 쉽다 조금 더 자세히 설명하자면, 퀸은 가로, 세로, 대각선 방향으로 움직일 수 있다. 그러니까, 어차피 가로에는 하나 밖에 놓을 수 없으니, 놓을 수 있는 자리면 놓고, 다음 row로 이동해서 놓을 위치를 탐색하는것이 목표이다. 아래 그림처럼, 첫째 줄에 두번째 칸에 놓은 경우 빨간색으로 칠한곳은 다른 퀸을 놓을 수 없.. 2021. 11. 18.
프로그래머스 :: 멀쩡한 사각형, javascript 😺 풀어 볼 문제 멀쩡한 사각형 간단한 풀이 설명 생각하기가 쉽지 않았던 문제이다. 어떤 규칙을 찾아서 공식을 구해야 하는 문제인데 나도 힌트를 얻기까지 혼자서 풀 지 못하였다. 최소공약수의 개념이 들어간다. 잘리는 정사각형을 자세히 살펴보면, 가로/최소공약수 세로/최소공약수의 패턴이 최소공약수만큼 반복되는것을 확인 할 수 있다. 그림으로 좀 더 이해하기 쉽게 살펴보자 예제는 12X8의 크기를 가지고 있기 때문에, 그림과 같이 3X2의 패턴들이 최소공약수인 4번만큼 반복된다. 나눠진 직사각형을 자세히 보면, 가로줄 12/4번, 세로줄 8/2번 총 5번을 통과해 다음 패턴으로 넘어간다.(겹치는 부분 포함) 따라서, 겹치는 부분을 제외한 3 + 2 - 1의 정사각형을 지나서 다음 패턴으로 넘어가게 되는데, .. 2021. 11. 16.