목록분류 전체보기 (162)
IT recording...
1920번: 수 찾기 1920번: 수 찾기 첫째 줄에 자연수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 N개의 정수 A[1], A[2], …, A[N]이 주어진다. 다음 줄에는 M(1 ≤ M ≤ 100,000)이 주어진다. 다음 줄에는 M개의 수들이 주어지는데, 이 수들 www.acmicpc.net import sys def input(): return sys.stdin.readline().rstrip() N = int(input()) A = set(list(map(int,input().split(" ")))) M = int(input()) num = list(map(int,input().split(" "))) for n in num: if n in A: print(1) else: pri..
1039번: 교환 1039번: 교환 첫째 줄에 정수 N과 K가 주어진다. N은 1,000,000보다 작거나 같은 자연수이고, K는 10보다 작거나 같은 자연수이다. www.acmicpc.net 풀이 처음에 문제를 보고 dfs를 사용하면 되겠군. 했는데 중간에 잘 안풀리자 갑자기 아니 뭐야 greedy로 풀면 되잖아?? 라면서 길을 잘못 들었다. 흠.. 다시 생각해보니까 바꾼 것 중에서 최대값이 나오려면 무슨 공식이 있는 것이 아니라 처음부터 끝까지 다 해봐야 한다. 1,000,000 이라는 숫자도 보면 다 해보고 싶게 생긴 숫자다. #1 . dfs만 사용 문자열의 크기 M의 이중for문을 돌면서 모~~~~~든 경우를 다 돌며 answer를 전역변수로 두어 k만큼 수행했을 때 현재까지의 Max를 갱신하도록..
1103번: 게임 1103번: 게임 줄에 보드의 세로 크기 N과 가로 크기 M이 주어진다. 이 값은 모두 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에 보드의 상태가 주어진다. 쓰여 있는 숫자는 1부터 9까지의 자연수 또는 www.acmicpc.net import sys sys.setrecursionlimit(10**6) #python3는 10**6까지 , pypy3는 10**5까지 / 아니면 메모리초과 def input(): return sys.stdin.readline().rstrip() N,M = map(int,input().split(" ")) B = [list(input()) for _ in range(N)] #print(B) visited = [[False]*M for _ in r..
https://www.acmicpc.net/problem/1713 1713번: 후보 추천하기 첫째 줄에는 사진틀의 개수 N이 주어진다. (1 ≤ N ≤ 20) 둘째 줄에는 전체 학생의 총 추천 횟수가 주어지고, 셋째 줄에는 추천받은 학생을 나타내는 번호가 빈 칸을 사이에 두고 추천받은 순서대 www.acmicpc.net import sys def input(): return sys.stdin.readline().rstrip() N = int(input()) M = input() R = map(int,input().split()) candidate = {} for i,r in enumerate(R): #액자가 가득 찼을 때 if len(candidate) >= N and r not in candidate:..
https://www.acmicpc.net/problem/1932 1932번: 정수 삼각형 첫째 줄에 삼각형의 크기 n(1 ≤ n ≤ 500)이 주어지고, 둘째 줄부터 n+1번째 줄까지 정수 삼각형이 주어진다. www.acmicpc.net 풀이 방법 모든 경로를 다 돌면서 최대 cost를 찾는거니까 완전탐색? 가만있어봐 보니까 경로 내려가면서 겹치는게 있잖아? → dp테이블 이용! 각 층, 각 칸의 상황을 저장 해 놓을 수 있는 dp테이블을 만들자 최종 코드 import sys def input(): return sys.stdin.readline().rstrip() #일단 모든 경로를 다 돌긴 해야하는데, dp테이블 사용해서 시간 줄이기 가능 #삼각형크기는 1 이상 500 이하 #대각선 왼쪽 혹은 대각선..
2098번: 외판원 순회 2098번: 외판원 순회 첫째 줄에 도시의 수 N이 주어진다. (2 ≤ N ≤ 16) 다음 N개의 줄에는 비용 행렬이 주어진다. 각 행렬의 성분은 1,000,000 이하의 양의 정수이며, 갈 수 없는 경우는 0이 주어진다. W[i][j]는 도시 i에서 j www.acmicpc.net 풀이 방법 모든 경로 중에서 최소 cost를 구해야 하니 완전탐색인가? 경로들의 순서를 기록할 필요는 없고 && city가 32개 이하 잖아? ⇒ bitmask 마지막에 다시 제자리로 돌아오니 어차피 순환이잖아? 우리가 원하는거는 그냥 최소 비용이고 → 시작점은 뭐로 하든 상관없음 top-down으로 할 것인가 , bottom-up으로 할 것인가? → 최소 cost를 구할 것이므로 route를 끝까지..
https://www.acmicpc.net/problem/1062 1062번: 가르침 첫째 줄에 단어의 개수 N과 K가 주어진다. N은 50보다 작거나 같은 자연수이고, K는 26보다 작거나 같은 자연수 또는 0이다. 둘째 줄부터 N개의 줄에 남극 언어의 단어가 주어진다. 단어는 영어 소문 www.acmicpc.net 더보기 import sys from itertools import combinations def input(): return sys.stdin.readline().rstrip() N, K = map(int, input().split()) word = [input() for _ in range(N)] basic = {"a","n","t","i","c"} #무조건 배워야 하는 글자 수 lear..
https://www.acmicpc.net/problem/3055 3055번: 탈출 사악한 암흑의 군주 이민혁은 드디어 마법 구슬을 손에 넣었고, 그 능력을 실험해보기 위해 근처의 티떱숲에 홍수를 일으키려고 한다. 이 숲에는 고슴도치가 한 마리 살고 있다. 고슴도치는 제 www.acmicpc.net 더보기 import sys from collections import deque def input(): return sys.stdin.readline().rstrip() R, C = map(int, input().split()) board = [] visited = [[False for _ in range(C)] for _ in range(R)] #물, 고슴도치를 큐에 넣고 움직이면서 굴에 들어갔는지 확인할거..
3425번: 고스택 3425번: 고스택 각각의 입력값에 대해서, 해당하는 프로그램을 수행한 뒤, 출력값을 출력하면 된다. 출력값이란 스택에 저장되어 있는 숫자이다. 만약, 프로그램 에러가 발생하거나, 모든 수행이 종료됐을 때 www.acmicpc.net 푼 코드 더보기 import sys from collections import deque input = sys.stdin.readline def goStack(pList, num): goStack = deque([num]) # 연산 for pL in pList: if pL.split(" ")[0] == "NUM": # 스택 최상위에 저장하기 0 goStack.appendleft(int(pL.split(" ")[1])) elif not goStack: re..
MVVM패턴이란? - View , ViewModel, Model 로 이루어진 아키텍쳐 패턴으로 큰 프로젝트에서 많이 쓰이는 개발 패턴이다. 장점 : 객체 지향적인 문제 해결 + 복잡한 프로그램의 유지 보수 + Unit Test 가능 + 재사용성 높음 단점 : 클래스가 많아지고 코드의 양이 많아짐 간단히 말하자면 1. View는 ViewModel의 상태변화를 Observing (model에 변화가 생기면 ViewModel단에서 데이터를 가공하여 View에 전달 해준다. -> View는 그 데이터를 받아서 UI에 적용만 ==> 화면이 변경되어도 뷰모델은 바뀌지 않아도 된다.) 2. ViewModel은 데이터의 변경을 Model에게 알려주어 업데이트를 요청 3. Model은 데이터 그 자체. 라고 할 수 있다..