분류 전체보기 147

19113. 식료품 가게

문제: 무단 배포 금지로 인해 사이트 주소로 남깁니다.https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AYxCRFA6iiEDFASu SW Expert AcademySW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!swexpertacademy.com 정답 코드:T = int(input())for test_case in range(1, T + 1): N = int(input()) arr = list(map(int, input().split())) # 끝에부터 보기 answer = [] while arr: answer.append(arr[-1] // 4 * 3..

SWEA 2024.07.18

95. k진수에서 소수 개수 구하기

문제 설명양의 정수 n이 주어집니다. 이 숫자를 k진수로 바꿨을 때, 변환된 수 안에 아래 조건에 맞는 소수(Prime number)가 몇 개인지 알아보려 합니다.0P0처럼 소수 양쪽에 0이 있는 경우P0처럼 소수 오른쪽에만 0이 있고 왼쪽에는 아무것도 없는 경우0P처럼 소수 왼쪽에만 0이 있고 오른쪽에는 아무것도 없는 경우P처럼 소수 양쪽에 아무것도 없는 경우단, P는 각 자릿수에 0을 포함하지 않는 소수입니다.예를 들어, 101은 P가 될 수 없습니다.예를 들어, 437674을 3진수로 바꾸면 211020101011입니다. 여기서 찾을 수 있는 조건에 맞는 소수는 왼쪽부터 순서대로 211, 2, 11이 있으며, 총 3개입니다. (211, 2, 11을 k진법으로 보았을 때가 아닌, 10진법으로 보았을 ..

문제 풀이 2024.07.18

13736. 사탕 분배(파이썬)

문제: 무단 배포 금지로 인해 사이트 주소로 남깁니다.https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AX8BB5d6T7gDFARO SW Expert AcademySW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!swexpertacademy.com 코드 이해를 위해 꼭 주석을 읽어주시기 바랍니다. 정답 코드:"""전체 사탕의 개수는 A+B=C, 일 때 C로 항상 일정하다.n번째 단계에서 A개를 가지고 있는 사람이 B개를 갖고 있는 사람보다 더 적다면 2A가 되고A가 B보다 많다면, C-A 개(B)를 A에서 빼게 될 테니 2A-C 가 된다.- key point:어차피 A가 가지고 있는 사탕의 개..

SWEA 2024.07.18

모듈러 산술 연산의 이해.

1. 모듈러 산술 연산 : 나머지 연산을 하는 것. 컴퓨터 언어에서 사용하는 %연산으로 표현하면 아래와 같다.r = a % m (r: 나머지, a: 피제수, m: 제수)r = a mod m# a를 m으로 나눈 나머지 r  2. 합동(Congruent) : mod 연산은 합동 관계를 바탕으로 두 수의 관계를 정의정수 a, b, m에 대해 m | (a-b)라고 하면, a와 b는 모듈러(modulus) m에 대해 합동이라 하고,a ≡ b (mod m)과 같은 수식으로 표현-> m | (a - b)에서 | 의 의미는 (a - b)는 m으로 나누어 떨어진다는 의미. 나누어 떨어지지 않는 경우는 ł-> a - b가 m이라는 정수로 나누어 떨어진다면, a ≡ b (mod m)과 같이 표현-> 이는 다르게 말하면, a..

알고리즘 2024.07.18

1227. [S/W 문제해결 기본] 7일차 - 미로2(DFS, BFS)

문제: 무단 배포 금지로 인해 사이트 주소로 남깁니다.https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV14wL9KAGkCFAYD SW Expert AcademySW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!swexpertacademy.com 정답 코드:T = 10 #테스트 케이스from collections import dequefor _ in range(T): answer = 0 dx = [0, 0, 1, -1] dy = [1, -1, 0, 0] r = 0 c = 0 test_case = int(input()) maze = [list(input(..

SWEA 2024.07.17

N-Queen 문제와 백 트래킹

1. N-Queen 문제란? (link) N*N 체스판에 N개의 퀸을 배치할 수 있는 경우의 수를 센다.퀸은 상하좌우, 대각선 방향으로 거리 제한 없이 이동할 수 있다.N=8인 경우, 경우의 수는 다음과 같다.64 * 63 * ... * 57 = 178,462,987,637,760C 기준 1초에 1억 번을 연산하므로 모든 경우의 수를 탐색하는데 약 20.6시간이 소요된다. 2. 백 트래킹필요없는 경우를 가지치기(pruning)함으로써 시간복잡도를 줄이는 방법을 백트래킹이라고 한다.       파이썬 코드:def nqueen(n): """ visited 의 인덱스는 행, 값은 열을 나타낸다. (1, 3)에 놓은 경우, visited[1] = 3 으로 표현하겠다는 것. 예시) n=4 이..

알고리즘 2024.07.17

reverse iterator등의 Iterator 유의점

필자는 코드 작성 중, 말이 안되는 곳에서 오류가 발생하는 것을 확인했다.이해를 돕기 위해 문제되는 곳만 쉽게 코드를 짠 코드 예시를 가져왔다. 예시 1a = [[1,2,3,4],[5,6,7,8]]# b에다가 a의 reverse를 넣고b = reversed(a)#b가 잘 들어갔는지 출력한 후#print(list(b))#zip함수를 통해 원하는 출력값 도출c = list(zip(*b))print(c)  예시 2a = [[1,2,3,4],[5,6,7,8]]# b에다가 a의 reverse를 넣고b = reversed(a)#b가 잘 들어갔는지 출력한 후print(list(b))#zip함수를 통해 원하는 출력값 도출c = list(zip(*b))print(c) 예시 1)에서 print(c)의 출력값은 [(5, 1..

파이썬 2024.07.17

94. 타겟 넘버(재귀를 통한 DFS)

문제 설명n개의 음이 아닌 정수들이 있습니다. 이 정수들을 순서를 바꾸지 않고 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 있습니다.-1+1+1+1+1 = 3+1-1+1+1+1 = 3+1+1-1+1+1 = 3+1+1+1-1+1 = 3+1+1+1+1-1 = 3사용할 수 있는 숫자가 담긴 배열 numbers, 타겟 넘버 target이 매개변수로 주어질 때 숫자를 적절히 더하고 빼서 타겟 넘버를 만드는 방법의 수를 return 하도록 solution 함수를 작성해주세요.제한사항주어지는 숫자의 개수는 2개 이상 20개 이하입니다.각 숫자는 1 이상 50 이하인 자연수입니다.타겟 넘버는 1 이상 1000 이하인 자연수입니..

알고리즘 2024.07.17