분류 전체보기

    [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)..

    [성장일기] SSAFY 1달 차

    과거를 회상하는 건 시간이 꽤 오래 걸린다. 매주 공개적으로 성장일기를 기록하겠다 마음먹고 밀린 기록이 수두룩 하다. 지난 글이 5월 초반이었던 점을 감안하면, 다짐한 것에 비해 꽤나 게을렀다.. 그동안 국비학원에서 프로젝트 시작을 앞두고 준비 자세를 취하던 중 사실상 포기 상태었던 ssafy 교육 합격소식을 받았고 이와 관련된 일들로 정신없는 시기를 보내긴 했다. 국비학원에서의 기록, ssafy 합격과 관련된 내용은 나중에 다뤄보도록 하고, 늦은 시각이지만 8월을 앞둔 시점에 다시 간단하게나마 일기쓰기를 다시 시작해보려고 한다. 자취 보통 첫 자취를 언제쯤 시작할까? 대부분 대학에 입학하면서 자취에 도전할 것이라 생각한다. 가족의 품안에서 떠나 나만의 공간을 갖는단 점에서 로망도 있고, 부동산 계약처럼..

    [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 # 인덱스를 기준..

    [SWEA] #4406. 모음이 보이지 않는 사람_파이썬, 리스트 특정 요소 모두 제거

    풀기 전 생각해보기😮 리스트 내의 특정 값을 모두 지우는 방법 remove로 시도하면 특정 값 전체가 아닌, 하나만 지워지게 되는 현상이 발생 풀이🛫 #4406. 모음이 보이지 않는 사람 T = int(input()) mo = ['a','e','i','o','u'] for i in range(T): word = input() word = [i for i in word if i not in mo] print("#"+str(i+1), ''.join(word)) 핵심 정리🎁 리스트 내 특정 요소 모두 지우기 origin = 'congratulation' remove = ['a','e','i','o','u'] # list comprehension을 이용해 특정 요소 모두 제거 origin = [i for i i..

    [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