파이썬
[SWEA] # 11012. 사각영역들의 합_파이썬
풀기 전 생각해보기😮 영역을 벗어난 곳을 계산해야 할 경우 어떻게 처리해야 할지 이미 계산된 곳을 계산하지 않으려면 어떤 처리를 해야 할지 풀이🛫 T = int(input()) for i in range(T): # 배열 생성 N, M = map(int, input().split()) arr = [list(map(int, input().split())) for i in range(N)] carr = [[True] * N for i in range(N)] answer = 0 # 정사각형 값의 합 구하기 for j in range(M): row, col, length = map(int, input().split()) s = 0 for c in range(length): for r in range(length)..
[SWEA] 10593. 가로세로 합_파이썬
풀기 전 생각해보기😮 가로열과 세로열의 합 탐색하기 중복되는 값 제거 풀이🛫 # 가로세로 합 T = int(input()) for t in range(T): N = int(input()) arr = [list(map(int, input().split())) for t in range(N)] answer = 0 row_list, col_list = [], [] # 가로열(행)의 합 리스트 구하기 for col in range(N): row_sum = 0 for row in range(N): row_sum += arr[col][row] row_list.append(row_sum) # 세로열(열)의 합 리스트 구하기 for row in range(N): col_sum = 0 for col in range(N)..
[SWEA] #1974. 스도쿠 검증_파이썬
풀기 전 생각해보기😮 이차원 배열 : 가로 탐색, 세로 탐색, 3x3 탐색 가로 탐색과 세로 탐색을 진행했을 때 이상이 없을 때, 모든 3x3 탐색(9번)을 진행해야 할까? 풀이🛫 T = int(input()) for _ in range(T): sdoku = [list(map(int, input().split())) for i in range(9)] li = [] check = 1 # 가로 탐색 for i in range(9): d = {} for j in range(9): if sdoku[i][j] not in d: d[sdoku[i][j]] = 1 else: d[sdoku[i][j]] += 1 for i in d: if d[i] > 1: check = 0 # 세로 탐색 for i in range(9)..
[SWEA] #1979. 어디에 단어가 들어갈 수 있을까_파이썬
풀기 전 생각해보기😮 이차원 배열 : 가로 방향, 세로 방향 탐색 퍼즐 공간이 세 글자일 때 vs 네 글자일 때 : ex) 0 0 0 1 1 vs 0 0 0 0 1 구분 퍼즐 내의 공간일 때 vs 퍼즐 경계가 포함된 공간일 때 : ex) 0 1 1 1 0 vs 0 0 1 1 1 구분 풀이🛫 T = int(input()) for _ in range(T): # N: 정사각형 퍼즐의 크기, K: 특정 단어 길이 N, K = map(int, input().split()) puzzle = [list(map(int, input().split())) for i in range(N)] fnd = 0 # 가로 기준 탐색 for i in range(N): l = 0 for j in range(N): if puzzle[i]..
[SWEA] #2001. 파리퇴치_파이썬
풀기 전 생각해보기😮 이차원 배열에서 파리채를 휘둘렀을 때 잡을 수 있는 파리 수 탐색 가능한 모든 경우의 수 탐색 풀이🛫 T = int(input()) for a in range(T): N, M = map(int, input().split()) arr = [list(map(int, input().split())) for i in range(N)] kills = [] # 파리채를 내려칠 곳 탐색 for i in range(N-M+1): for j in range(N-M+1): fly = 0 # 해당 위치를 타격했을 때 잡을 수 있는 파리의 수 탐색 for k in range(M): for l in range(M): fly += arr[i+k][j+l] kills.append(fly) # 배열 범위 안에서..
[백준 파이썬] #2804 크로스워드 만들기
풀기 전 생각해보기😮 이차원 배열을 생성할 수 있는가 이차원 배열 구조에서 원하는 위치의 요소를 선택할 수 있는가 풀이🛫 # 2804 크로스워드 만들기 # Bronze II word1, word2 = input().split() # 이차원 배열 생성 arr = [['.' for i in range(len(word1))] for j in range(len(word2))] # word1, word2에서 겹치는 글자의 인덱스 찾기 idx = 0 for i in word1: if i in word2: idx = i break # word1, word2에서 겹치는 글자의 인덱스 찾기 crs_idx_1 = word1.index(idx)# 1 crs_idx_2 = word2.index(idx)# 4 # 인덱스를 기준..
[Python] 부동 소수점, 소수점 연산할 때 주의 사항
파이썬에서 소수점 계산값의 결과를 비교할 때 부동소수점을 주의해야 한다. 컴퓨터는 이진법으로 수를 계산하기 때문에, 사람이 인지하는 숫자와 컴퓨터가 인지하는 숫자에 오차가 발생할 수 있다. print(3.2-3.1 == 0.1)#0.099999999999987 # False 사람에게 3.2 - 3.1을 계산하도록 시킨다면 0.1을 답으로 제출할 것이다. 비교연산자 == 을 이용해 0.1과 비교했을 때 True를 반환할 것이다. 그러나 컴퓨터는 3.2-3.1 == 0.1의 값에 대해 False를 반환한다. 그 이유는 소수점 연산에 대해 딱 떨어지는 수가 아닌 매우 작은 수(입실론) 만큼의 오차가 발생하기 때문이다. python 3.5 이상에서는 math 모듈을 사용해서 부동소수점 문제를 해결할 수 있다. ..
[SWEA] 2007. 패턴 마디의 길이_파이썬
풀기 전 생각해보기😮 주어진 문자열 속에서 반복되는 글자를 어떻게 찾을 것인가 글자가 몇번 반복했는지 확인하는 방법 풀이🛫 #2007. 패턴 마디의 길이 T = int(input()) for i in range(T): words = input() x = words[0] # x: 반복되는 글자 idx = 0 # idx: x의 길이, 풀이 기준 while True: idx += 1 if x == words[len(x):2*len(x)]: break else: x = words[:idx] print("#"+str(i+1),idx-1) 핵심 정리🎁 좋은 풀이였는지는 잘 모르겠지만 풀어본 방식을 소개해보겠다. 반복된 글자를 찾는다. 조건으로 주어지지 않았지만, 주어진 테스트 케이스를 통해 문자열은 반드시 반복되는..
[SWEA] 1985. 중간 평균값 구하기_파이썬
풀기 전 생각해보기😮 소수점 반올림하는 방법 리스트 최댓값, 최소값을 지우는 방법 풀이🛫 T = int(input()) for i in range(T): s = 0 li = list(map(int, input().split())) li.remove(max(li))# 최댓값 지우기 li.remove(min(li))# 최솟값 지우기 for j in li: s += j print("#"+str(i+1), round(s/8)) 핵심 정리🎁 소수점 반올림 하기 round(num, n) 링크💎 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com
[SWEA] 1926. 간단한 369 게임_파이썬
풀기 전 생각해보기😮 집합의 포함관계 리스트 요소를 한 줄에 출력하는 방법 풀이🛫 # 1926. 간단한 369 게임 N = int(input()) li = [] for i in range(1, N+1): # 포함관계 주의 if (i%10 in [3, 6, 9]) or (i//10 in [3, 6, 9]): if (i%10 in [3, 6, 9]) and (i//10 in [3, 6, 9]): li.append("--") else: li.append("-") else: li.append(str(i)) print(" ".join(li)) 핵심 정리🎁 링크💎 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com