본문 바로가기
구현 퇴근하고 평일에 가볍게 알고리즘 2문제 정도 풀어보려고 한다. 해당 게시글은 이코테 책을 가지고 해당 파트가 완료될 때까지 업데이트될 예정이다. 상하좌우더보기N * N 크기의 정사각형 공간에서 1, 1부터 시작하여 상, 하, 좌, 우의 값을 U, D, L, R로 받아 움직인 값을 입력 받아 좌표를 출력한다. 단, 공간을 벗어나면 무시된다.n = int(input())moves = list(input())x, y = 1, 1dx = [-1, 1, 0, 0]dy = [0, 0, -1, 1]move_list = ['U', 'D', 'L', 'R']for move in moves: for i in range(len(move_list)): if move == move_list[i]: .. 2024. 5. 27.
그리디 백준 문제의 DP에서 심각한 벽을 느껴 화제 전환김에 이전에 사둔 이코테 책을 풀어보려고 한다. 문제에 대한 부분은 따로 적진 않겠다.  숫자 카드 게임더보기문제의 의도각 행 별로 가장 작은 값을 구하고 그 중에서 가장 큰 값을 추출하면 된다.n, m = map(int, input().split())result = []for _ in range(n): num_list = list(map(int, input().split())) result.append(min(num_list))print(max(result))내가 푼 방식은 리스트에 각자의 작은 값을 담고 그 리스트에서 가장 큰 값을 추출했다. n, m = map(int, input().split())result = 0for _ in range.. 2024. 5. 20.
10992번 Python https://www.acmicpc.net/problem/10992 문제가 쉬운듯하면서도 어렵게 느껴졌다. 규칙을 몇 가지는 찾았지만 만들어내야 하는 방법을 생각하지 못했다. 그래서 외부의 도움을 조금 받았다. N = int(input())for i in range(1, N + 1): if (i == 1 or i == N): print(' ' * (N - i) + '*' * (2 * i - 1)) else: print(' ' * (N - i) + '*' + ' ' * (2 * (i - 1) - 1) + '*')코드는 이러한 형태로 작성했다.  * * * * * * **********이러한 형태를 만들어야한다고 생각했을 때, 어떻게 해야할지 규칙부터.. 2024. 5. 1.
10991번 Python https://www.acmicpc.net/problem/10991 10991번: 별 찍기 - 16 예제를 보고 규칙을 유추한 뒤에 별을 찍어 보세요. www.acmicpc.net 규칙되는 부분을 얼추 찾은 것 같았는데 출력 형식이 잘못되었다고 나올까봐 배제하고 다른 풀이를 생각했는데 그것이 올바른 길이었다. * * * * * * * * * * * * * * * 유심히 보았던 것은 왼쪽의 공백이었다. 4 > 3 > 2 > 1의 순서로 일정하게 줄어드는 것을 확인했다. 그렇다는 건 복잡하게 생각할 필요성이 없다고 판단했다. 그 다음으로 생각한 것이 *의 형태였다. 기존에는 *만 생각해보았다면 이번엔 '* '의 형태를 도입해보기로 생각까지는 했었다. 하지만 백준에서 보았을 때, 오른쪽의 공백 형태가 보이지 .. 2024. 4. 23.
2446번 Python https://www.acmicpc.net/problem/2446 2446번: 별 찍기 - 9 첫째 줄부터 2×N-1번째 줄까지 차례대로 별을 출력한다. www.acmicpc.net 오랜만에 Problem Solving으로 블로그에 게시물을 남긴다. 단순한 별찍기 문제이지만 출력 형식이 잘못되었다는 리턴을 받았다. N = int(input()) for i in range(N, 1, -1): print(' ' * (N - i) + '*' * (2 * i - 1) + ' ' * (N - i)) for i in range(1, N + 1): print(' ' * (N - i) + '*' * (2 * i - 1) + ' ' * (N - i)) 문제에서 요구하는대로 됐지만 출력 형식이 잘못되었다고 한다. N = .. 2024. 4. 22.
8393번 Python https://www.acmicpc.net/problem/8393 8393번: 합 n이 주어졌을 때, 1부터 n까지 합을 구하는 프로그램을 작성하시오. www.acmicpc.net 단순히 순차적으로 나열되게 입력받는 수까지 수를 더해서 출력해주면 된다. N = int(input()) sum = 0 for num in range(1, N + 1): sum += num print(sum) 이렇게 해도 정상적으로 출력이 된다. n = int(input()) print(n * (n+1) // 2) 다른 풀이를 보았을 땐 수학 공식같은 것이 보였다. [1, 2, 3, ...] 이런 식으로 일정한 수로 값이 늘어나는 수열의 형태를 등차수열이라 하는데 등차수열의 합을 구하는 공식은 N * (N + 1) // 2여서 .. 2024. 4. 6.