본문 바로가기

파이썬(Python)58

[Python] dx dy 조건에 따른 방향 변환. 문자가 주어진 경우. 숫자 채우기 1. 2차원 배열 - 벽에 닿으면 반대 방향 전환조건에 따라 방향을 반대로 전환하기 위해서는 dxs와 dys를 다음과 같이 설정한다.dxs, dys = [0, 1, -1, 0], [1, 0, 0, -1] # 우, 하, 상, 좌 x, y가 현재 좌표라고 하면 x+dxs [i], y+dys [i]은 i가 0이면 오른쪽, 1이면 아래쪽, 2이면 위쪽, 3이면 왼쪽으로 이동한다.이때 i가 0과 3 그리고 1과 2는 서로 반대 방향을 가진다. 따라서 방향을 뒤집기 위해서는 3에서 방향 번호를 빼면 된다.예를 들어 현재 방향이 위쪽이라고 하면 위쪽은 2이므로 위쪽의 반대 방향은 3-2=1, 즉 아래쪽이 된다. def in_range(x,y): return x>=0 and x=0 and y 위 코드에서 n과 m.. 2024. 11. 6.
[Python] 특정 방향으로 이동. dx dy. 방향 회전. 2차원 배열 활용. in_range 함수 1. dx, dy를 이용하기- 어떤 특정한 위치에서 숫자에 따라 한 칸 이동한다.- 0은 위쪽, 1은 오른쪽, 2는 아래쪽, 3은 왼쪽이다. num = int(input('숫자를 입력하세요: '))pos_x, pos_y = 0, 0if num == 0: pos_y += 1elif num == 1: pos_x += 1elif num == 2: pos_y -= 1else: pos_x -= 1print(f'이동한 후 위치는 {pos_x}, {pos_y}이다.') 숫자를 입력하세요: 0이동한 후 위치는 0, 1이다.숫자를 입력하세요: 1이동한 후 위치는 1, 0이다.숫자를 입력하세요: 2이동한 후 위치는 0, -1이다.숫자를 입력하세요: 3이동한 후 위치는 -1, 0이다. - 위 코드에서 .. 2024. 8. 10.
[Python] 파이썬으로 스도쿠 문제 풀기 갑자기 스도쿠??대학을 졸업하고 1년 동안 취준 끝에 판교에 있는 회사에 AI 엔지니어로 입사하게 되었다.서울에서 통근을 하며 1시간 동안 무엇을 할까 하다가 무슨 바람이 불었는지 요즘 스도쿠에 빠졌다.지하철에 있는 시간 동안 쉬운 문제는 5분, 어려운 문제는 10~15분 문제를 풀게 되는데출, 퇴근하면서 약 8문제 정도 푸는 것 같다.지루한 출, 퇴근길이 그나마 시간을 빠르게 해주는 것 같아 나름 괜찮다. 참고로 내가 스도쿠를 푸는 사이트는 이곳이다.https://sudoku.com/ko 지금 무료 스도쿠 퍼즐을 즐겨보세요!스도쿠의 목표는 9×9 격자를 숫자로 채워, 각 행과 열과 3×3구역이 1에서 9까지의 숫자 모두를 포함하도록 하는 것입니다. 게임을 시작하면, 9×9 격자의 몇몇 칸은 채워져 있습.. 2024. 6. 9.
[Python] 배열에 기록하여 문제 풀기 배열의 적절한 위치에 원하는 값을 기록하여 문제를 해결한다. 1. 시간과 위치 - A와 B가 1초에 1m씩 움직인다. - A는 5초 동안 앞으로 갔다가 4초 동안 뒤로 가고 3초 동안 앞으로 간다. - B는 3초 동안 뒤로 갔다가 7초 동안 앞으로 가고 2초 동안 뒤로 간다. - A와 B가 만나게 되는 지점은 몇 초일까? - A와 B가 만나기 위해서는 시간과 위치가 같아지는 시점이 생겨야 한다. - 위치만 표시하게 되면 A와 B가 언제 만나는지 알기 쉽지 않다. - 다른 방법으로는 1초 단위로 A와 B의 위치를 동시에 움직이며 시뮬레이션을 한다. - 하지만 시간에 따라 어느 방향으로 이동하는 것을 판단해야 하므로 쉽지 않다. - 따라서 A, B를 개별적으로 1초 단위로 어느 위치에 있는지 배열에 기록하며.. 2023. 12. 18.
[Python] 최장 연속 부분 수열 1. 숫자가 동일한 연속 부분 수열 - 연속 부분 수열이란 어떤 수열에서 특정 구간에 속하는 수들을 모두 뽑았을 때 나오는 부분 수열이다. - 연속해서 나오는 같은 숫자를 한 묶음이라 할 때, 총 몇 개의 묶음이 나오는지 구하라. - 수열은 다음과 같다. - 수열에서 [1,1,1], [2,2], [3,3,3,3], [2] 총 4개의 묶음이 있다는 것을 알 수 있다. - 그림에서 빨간색 테두리는 새로운 묶음이 시작되는 index이다. - 따라서 새로운 묶음이 시작되는 index 개수가 답이 되는 것을 알 수 있다. - 새로운 묶음의 특징은 2가지가 있다. - 첫 번째, 직전에 나온 숫자와 다른 숫자가 나왔다. - 두 번째, index가 0일 때 시작된다. - 2가지 조건에 만족하면 개수를 증가시킨다. ar.. 2023. 11. 11.
[Python] 사각형 넓이 문제 - 이중 배열 이용. 겹치는 영역. 겹치지 않는 영역. 최소 사각형 넓이 1. 사각형 넓이 구하기 - 예를 들어 좌표 (2, 3)과 (5, 7)이 각각 사각형의 좌측 하단과 우측 상단의 좌표일 때 넓이를 구해야 한다. - 수식을 사용하면 가로 3 (=5-2), 세로 4 (=7-3)이기 때문에 넓이는 12이다. - 다른 방법으로는 2차원 배열을 이용하는 것이다. - 두 모서리가 (2, 3), (5, 7)이므로 배열의 2행 3열, 5행 7 열이라 생각한다. - 2차원 배열이 8행 8열이 있다고 가정하고 모든 원소는 0이다. - 이중 반복문을 사용해 2행 3열부터 5행 7열에서 각각 1행 1열을 뺀 4행 6열까지 순회한다. - 순회하며 개수를 하나씩 증가한다. - 총개수가 사각형의 넓이가 된다. - 따라서 좌측 하단 모서리가 (x1, y1)이고 우측 상단 모서리가 (x2, y2)인.. 2023. 11. 4.