전체 글 562

[Python] n4396 | 지뢰찾기

[2022.02.22 다시 품] > deepcopy는 시간이 오래 걸리니까 answerArray에다가 모든 값이 '.'인 값을 넣어서 리스트를 새로 만들어줌! 6번이나 틀린 문제다.. 흡 문제를 제대로 이해하지 못해서 생긴 비극적인 일.. 지뢰를 밟았을 때를 따로 조건 처리 해줬어야 했는데 새까맣게 까먹고 있던 조건이었다. 지뢰를 밟게 되면? > 모든 지뢰는 *로 표시를 해야한다. > 숫자가 적혀있는 부분을 제외한 모든 곳은 .로 변경되어야 한다. n = int(input()) # 상, 상우,우,우하,하,하좌,좌,좌상 dx = [-1, -1, 0, 1, 1, 1, 0, -1] dy = [0, 1, 1, 1, 0, -1, -1, -1] bombArray = [list(input()) for _ in ran..

[Python] n2578번 | 빙고

bingo_map = [list(map(int, input().split())) for _ in range(5)] master_map = [list(map(int, input().split())) for _ in range(5)] visited = [[0 for _ in range(5)] for _ in range(5)] master_cnt = 0 def cnt_check(bingo_num): if bingo_num >= 3: return False 입력값 받아오는 과정 bingo_map = 빙고판 배열 master_map = 사회자가 부르는 배열 순서대로 받아오기 visited= 방문처리하는 배열 master_cnt = answer cnt_check 함수는 현재 클리어된 줄의 개수가 3이상일 경우 Fa..

[Python] n12933번 | 오리

[2022. 02. 22 품] inp = list(input()) quack = ['q','u','a','c','k'] len_inp = len(inp) idx = 0 answer = 0 visited = [False] * len_inp first = False if len_inp % 5 != 0 or inp[0] != "q": print(-1) exit() for a in range(len_inp): if inp[a] == "q" and not visited[a]: # 방문하지 않았고, q인 곳 -> 시작 구간이다. first = True for i in range(len_inp): if not visited[i] and quack[idx] == inp[i]: visited[i] = True if in..

[Python] n14467 | 소가 길을 건너간 이유 1

from copy import deepcopy n = int(input()) array = [] road = [] for i in range(n): a = list(map(int, input().split())) array.append(a[0]) road.append(a[1]) cnt = 0 answer=0 index_num_list=[] num = 0 example_list = deepcopy(array) for i in range(1, 11): ex = [] if array.count(i) 특정한 문자열 안에 찾고자하는 문자열이 있는지 확인하기. else: # 중복된 숫자가 있을 경우 if l[a] != b: # 만약 리스트에 있는 a의 방향과, b의 값이 다르다면? -> 이동횟수 +1 ct += 1..

[Python] n1913 | 달팽이

[2022.02.22 푼 코드] n = int(input()) input_num = int(input()) dic = {} array=[[0 for _ in range(n)] for _ in range(n)] temp = 1 # 1~N까지의 정수 (표에 들어갈) x, y = n // 2, n // 2 dic[temp] = (x, y) array[x][y]=1 # 상,우,하,좌 dx = [-1,0,1,0] dy = [0, 1, 0, -1] cnt = 1 for i in range(1, n + 1): if i==n: for j in range(i-1): # 상 temp+=1 x+=dx[0] y+=dy[0] dic[temp]=(x,y) array[x][y]=temp break if i % 2 != 0: # 상..

[Python] n20546 | 기적의 매매법

2021.09.27 코드 money = int(input()) array = list(map(int, input().split())) # 준현 def BNP(money, array): count = 0 # 주식 수 for today in range(len(array)): temp = money // array[today] money -= temp * array[today] count += temp money += count * array[-1] return money # 성민 def TIMING(money, array): up_cnt = 0 # 상승 연속체크 down_cnt = 0 # 하락 연속체크 count = 0 # 주식 수 for today in range(1, len(array)): temp = ..

[Python] n5597 | 과제 안 내신 분..?

# https://www.acmicpc.net/problem/5597 submit_list = [] for i in range(28): submit_list.append(int(input())) submit_list.sort() for _ in range(2): submit_list.append(None) a = 0 for i in range(1, 31): if i == submit_list[a]: a += 1 continue else: print(i) submit _list 에는 제출한 학생들의 번호를 넣고 보관한다. 2명의 번호는 None을 대신 넣어준다. 1부터 비교해나가다가, 만약 i값과 submit_list의 값이 다르면, submit_list의 index값만 1 증가시키고 continue문을 ..

[Python] lambda 함수 정리

lambda 함수란? 이름 없는 함수이다! (=익명함수) 일회용 함수라서, 보통 한 번 쓰고 버릴 함수 생성시 사용된다. 함수 객체는 메모리에 올라가서 변수를 통해 자신이 호출되기를 기다린다. 따라서, 한 번 쓰고 말것이라면, 메모리 낭비가 된다. 따라서 이때 lambda함수를 사용한다. 만약 lambda함수를 호출하고 싶다면? 변수에 함수 저장후, 변수 호출해주면 된다! lambda 함수는 어떻게 작성해서 쓰이는가!? lambda 매개변수들 : 식 def 함수 함수 (매개변수) : return 결과 lambda 함수 lambda 매개변수 : 결과 ex1) (lambda x:x+1)(3) >> 4 ex2) 람다 표현식 안에서는 변수 생성이 불가하다. 아래처럼 밖에서 변수 생성해줘야 함 y=10 (lamb..

[Python] n20053 | 최소, 최대 2

#1 #1 T=int(input()) array=[] for i in range(T): N=int(input()) array.append(list(map(int,input().split()))) for ex_list in array: print(min(ex_list), max(ex_list)) 위 코드에서는 메모리 낭비가 심했다! 왜 이럴까보니까, 굳이 입력받은 모든 리스트들을 담아둘 필요가 없었기 때문이다 #2 #2 T=int(input()) array=[] for i in range(T): N=int(input()) array=list(map(int,input().split())) print(min(array), max(array)) 위 코드처럼, 한 줄의 리스트만 저장하고, for문 돌면서 계속 내..

[Python] sort, sorted, key 매개변수 이용한 정렬

PYTHON 정렬 함수 정리 1. sort() > 리스트를 정렬된 상태로 변경한다. (리스트만을 위한 메소드) 오름차순 : sort() 내림차순 : sort(reverse=True) 2. sorted() > 기존의 리스트를 변경하는 게 아니라, 정렬된 새로운 리스트를 반환해준다. 딕셔너리 객체도 받을 수 있다. 오름차순 : sorted() 내림차순 : sorted(reverse=True) >> print(sorted(array,reverse=True)) 3. key 매개변수 사용 (sorted + lambda) > 특정한 데이터를 기준으로 정렬 가능해진다. data=[['가',1],['다',3],['나',2]] print(sorted(data,key=lambda x:x[0])) #[['가', 1], ['..

[Python] n1212번 | 8진수 2진수

# n = int(input()) # array = [] # # while n > 1: # result = n % 2 # n = n // 2 # array.append(result) # array.append(1) # # index = len(array) # for i in range(index - 1, -1, -1): # print(array[i],end='') 처음에 파이썬 내에 진수변환해주는 내장함수의 존재는 새까맣게 잊은채,, 빡구현을 시전한 과거의 나 자신,, 반성해 반성해 ㅠㅠ 8진수 입력 받아놓고 10진수로 계산함,, 바부 ㅠㅠ 학교 전공수업 때 배웠었는데, 그새 까먹어서 다시 복습 ^0^ # 다른 진수 -> 10진수로 변환 b=int('0b1010',2) o=int('0o12',8) h=i..

우연히 읽게 된 "우연히, 웨스 앤더슨" 리뷰 작성!

요새 코로나 팬데믹으로 해외여행은 물론이거니와 국내여행조차 떠나는 게 어려운 게 실정입니다. 약 2년동안 집에서 생활을 이어나가고, 지인들도 예전만큼 자주 만나지 못했어서 매일매일이 똑같게 느껴지고, 일상이 진부했습니다. 그런데 어느날, 정말 책 이름처럼 우연히 "우연히 웨스 앤더슨"이라는 책에 대해 접하게 되었습니다. 책 표지만 봐서는 , 웨스 앤더슨 감독이 직접 집필한 책인줄 알았는데, 알고보니 웨스 앤더슨의 작품을 사랑하고 동경하는 팬들의 힘으로 쓰여진 책이었습니다. 저는 웨스 앤더슨 감독을 "그랜드 부다페스트 호텔"이라는 영화를 통해 알게 되었습니다. 일단 보통 보고자하는 영화를 선택할 때, 줄거리도 중요하지만 보여지는 부분, 색감이 더 눈에 띄는 건 사실입니다. 평소에 디자인쪽에도 관심이 많았고..

[Python] n19236번 | 청소년 상어

격자 크기 : 4 위치 : X,Y 한 칸에는 물고기 1마리 물고기 (번호,방향) >> 1쪽에 있는 물고기로만 이동이 가능. - 물고기 있는 칸으로 이동 : 물고기 먹고, 물고기 방향 GET - 이동할 수 없는 칸 : 물고기가 없는 칸 - 만약 이동할 수 없는 상태이면? 공간에서 벗어나 집으로 간다. 상어가 이동한 후에는 다시 물고기가 이동하며 이 과정이 반복 >> 상어가 먹을 수 있는 물고기 번호의 합의 최댓값을 구하라. DFS와 백트래킹의 차이점 DFS : 모든 경우의 수를 전부 확인하는 알고리즘이다. 백트래킹 : 모든 경우의 수를 확인하지 않는다. 스택에 자식노드를 넣기 전에 유망한지 확인 후 스택에 넣는다. 왜 이 문제가 DFS문제인가? > 모든 노드를 검사해서, 값을 구해야하기 때문이다. 왜 이 ..

Github 오류 | fatal: Exiting because of an unresolved conflict.

pull을 하니 오류가 났다.. 충돌때문이라고 하는데,, git status를 일단 쳐봤다. 깃허브에도 n20058.py파일이 올라가있고, 로컬에도 똑같이 있는 상태여서 올라가지 않았던 것! 그래서 로컬저장소에 있는 파일명을 사알짝 바꿔줬더니 바로 push가 먹혔다! (깃허브 저장소를 사용하다가, commit을 reset으로 해서 되돌려서, 내용을 전단계로 옮겼던 상황에서 일어난 에러)

[Python] n19237번 | 어른 상어

문제 출처 : www.acmicpc.net/problem/19237 상어 번호 : 1~M이하의 자연수 번호, 랜덤 (단, 모든 번호는 다르다) 가장 강력한 상어 : 1의 번호를 가진 상어 격자 크기 : N X N 상어가 들어있는 칸의 개수 : M 1단계 (이동) - 모든 상어가 자신의 위치에 자신의 냄새를 뿌린다. - 그 후 1초마다 모든 상어가 동시에 상하좌우로 인접한 칸 중 하나로 이동하고, 자신의 냄새를 그 칸에 뿌린다. (냄새는 상어가 K번 이동하고 나면 사라진다) 이동 방향 결정 방법 1순위 ) 인접한 칸 중 아무 냄새가 없는 칸의 방향을 잡는다 2순위 ) 그런 칸이 없으면 자신의 냄새가 있는 칸의 방향으로 잡는다. (이때 가능한 칸이 여러개 일 수 있는데, 이땐 특정한 우선순위를 따라야 한다...

[Python] n20055번 | 컨베이어 벨트 위의 로봇

컨베이어 벨트 길이 : N 컨베이어 벨트 위아래 총 길이 : 2N 벨트 간격 : 1 벨트 칸 수 : 2N개 반드시 로봇은 올라가는 위치(1)에서만 올라가고, 내려가는 위치(N)에서만 내려갈 수 있다. 내려가는 위치에 있는 로봇의 경우 반드시 땅으로 내려가야 한다. 칸에 올라가거나 이동하면, 그 칸의 내구도는 즉시 1만큼 감소한다. 내구도가 0인 칸에는 로봇 올라갈 수 없다. > 이 글의 목적 : 컨베이어 벨트를 이용해 로봇들을 건너편으로 옮기려고 한다. * 과정 * 1. 벨트가 한 칸 회전한다. 2. 가장 먼저 벨트가 올라간 로봇부터 회전하는 방향으로 이동이 가능하면, 이동한다. 이동할 수 없다면 가만히 있는다. (이동하려면 이동하려는 칸에 로봇이 없어야 하며, 그 칸의 내구도가 1이상 남아있어야 한다)..

[Python] deque 헷갈리는 부분 총 정리

입력값 1 2 1 2 1 2 belt = deque(list(map(int, input().split()))) # deque([1, 2, 1, 2, 1, 2]) 입력값 1 2 1 2 1 2 3 4 3 4 3 4 belt = deque(list(map(int, input().split())) for _ in range(2)) # deque([[1, 2, 1, 2, 1, 2], [3, 4, 3, 4, 3, 4]]) 입력값 3 (N값) robot = deque(i for i in range(N)) print(robot) # deque([0, 1, 2]) 입력값 3 (N값) robot=deque([i] for i in range(N)) print(robot) # deque([[0], [1], [2]]) 입력값 ..

[Python] n20056번 | 마법사 상어와 파이어볼

* 주어진 조건 * 격자 크기 : N X N 파이어볼 : M개 질량 : m 방향 : d 속력 : s 위치 : (r,c) r은 행, c는 열 파이어볼의 방향 격자의 행과 열은 1번부터 N번까지 번호가 매겨져 있고, 1번 행은 N번과 연결되어 있고, 1번 열은 N번 열과 연결되어 있다. => 이 문구를 이해하는 데 꽤나 시간이 오래 걸렸..다.. 바보인가부다.. 1번 행에서 격자 밖인 0번 행으로 넘어갈 경우에는 격자 밖을 벗어나는 게 아니라 N번 행으로 넘어간다는 뜻이다. 순환시스템이라고 보면 되려나..? ㅎ..ㅎ * 과정 * 1. 모든 파이어볼이 자신의 방향 d로 속력 s칸 만큼 이동한다 2. 이동이 모두 끝난 뒤, 2개 이상의 파이어볼이 존재하는 칸에서는 다음과 같은 일이 일어난다. 1) 같은 칸에 있..

[Python] n20057번) 마법사 상어와 토네이도

맵 크기 : N X N 모래 양 : A[r][c] 토네이도 시전 시, 가운데 칸 부터 이동이 시작된다. 토네이도는 1번에 1칸 씩 이동한다. X->Y로 이동할 시,Y의 모든 모래가 비율이 적혀있는 칸과 a로 이동한다. 비율은 y에 있는 모래의 해당 비율만큼으로 소수점 아래는 버린다. a로 이동하는 모래양은 비율이 적혀있는 칸으로 이동하지 않은 남은 모래의 양이다. 모래가 이미 있는 칸으로 이동하면?모래의 양은 더해지게 된다. 토네이도는 (1,1)까지 이동한 뒤 소멸한다.모래가 격자 밖으로 이동할 수도 있다.토네이도 소멸 시 격자 밖으로 나간 모래양을 구해보는 것이 이 문제의 핵심 **제한** 3 ≤ N ≤ 499 N은 홀수 0 ≤ A[r][c] ≤ 1,000 가운데 칸에 있는 모래의 양은 0 단계 1) ..

[Python] n20058) 마법사 상어와 파이어스톰

이 문제는 회전(90도), 인접한 얼음구하기, BFS를 구현할 수 있어야 하는 문제이다. 맵 크기 : 2^N X 2^N 얼음의 양 : A[r][c] 단계 : L 파이어스톰 단계 1) 격자(2^N X 2^N)를 부분격자2^L X 2^L로 나눈다. 2) 모든 부분 격자들을 시계방향으로 90도 회전시킨다. 3) 얼음이 있는 칸 3개 또는 그 이상과 인접해있지 않은 칸은 얼음의 양이 1 줄어든다. 우리가 출력해야 하는 것은? 1) 남아 있는 얼음 A[r][c]의 합 2) 남아 있는 얼음 중 가장 큰 덩어리가 차지하는 칸의 개수 (단, 덩어리가 없으면 0을 출력) ** 제한 ** 2 ≤ N ≤ 6 1 ≤ Q ≤ 1,000 0 ≤ A[r][c] ≤ 100 0 ≤ Li ≤ N 단계 1) 회전 왼쪽 상단 -> 오른쪽 ..

Python) 데이터 입력받는 법 정리

- 입력받는 데이터가 1줄에 1개 있을 경우 ex) 1 num=int(input()) - 입력받는 데이터가 1줄에 2개 이상일 경우 (2개라고 가정함, 입력받는 데이터가 숫자일 경우) ex) 1 2 n1,n2=map(int,input().split()) (입력받는 데이터가 문자일 경우) ex) R R R U D D list1=input().split() # 결과값 # ['R', 'R', 'R', 'U', 'D', 'D'] (입력 받는 데이터가 숫자이고, 리스트로 받을 경우) array=[] array=list(map(int,input().split()) - 2차원 배열 맵 초기화하기 n,m=map(int,input().split()) # n은 행, m은 열 map_list=[[0]*m for _ in r..

[Github Error #1] error: Pulling is not possible because you have unmerged files.

error: Pulling is not possible because you have unmerged files. -> git pull origin main을 입력한 결과 로컬이랑 원격에 같은 폴더, 파일이 있는데, 로컬에서 merge가 잘 안 되었다고 알려주는 에러였다. git status git add . git commit -am "메세지" git pull origin main 정상적으로 pull이 완료되었다! git commit -am이 뭘까..? 파일이 커밋된 후, 다시 새 버전을 만들 경우 add, vim에서 msg작성하는 작업을 명령창에서 바로 할 수 있다. -> 즉 add와 commit을 동시에 할 수 있다.