전체 글 썸네일형 리스트형 [baekjoon] 3190. 뱀 로직 1. 구현문제. 문제에서 하라는대로 그대로하면 되는데, 실제로 코드를 돌렸을 때 에러들이 많이 발견됨.(내 구현 능력부족) 코드 from collections import deque N = int(input()) K = int(input()) board = [[0 for _ in range(N)] for _ in range(N)] for k in range(K): x, y = map(int, input().split()) board[x-1][y-1] = 1 # 사과1, 뱀2, 빈칸0 L = int(input()) change = {} # 리스트가 아닌 dict로 하는 이유 # dict로 하면 밑에서 시간에 해당할 때 time이 change에 해당하는게 있다면 change_move함수를 써야하는데 이.. 더보기 [programmers] 카카오프렌즈 컬러링북 코드 from collections import deque from copy import deepcopy def solution(m, n, picture): near = [(0, 1), (1, 0), (0, -1), (-1, 0)] # visit = [[0 for _ in range(n)] for _ in range(m)] pic = deepcopy(picture) # print(visit) mymax = 0 q = deque() cnt = 0 result = [] for i in range(m): for j in range(n): if picture[i][j] != 0: q.append([i, j]) cnt += 1 answer = 0 while q: x, y = q.popleft() temp = pi.. 더보기 [programmers] 가장 큰 수 로직 1. 숫자마다 첫번째 오는 숫자가 큰 것부터 나열하면 된다 -> [6, 10, 2, 11]이면 [6, 2, 11, 10]이 되도록. - 처음에는 하나하나 비교하려했는데,, 쉽지 않을것같아서 자리수를 맞추고 비교하려고 한다. - numbers의 원소가 0이상 1000이하이니까 만단위로 바꾸기 - 이후 sort해서 join으로 붙이기 코드 def solution(numbers): numbers = list(map(str, numbers)) check = [] if ''.join(numbers) == '0' * len(numbers): # print('yes') return '0' for number in numbers: if len(number) == 4: check.append((number, num.. 더보기 [programmers] 문자열 압축 로직 1. s를 돌면서 앞에 값이랑 뒤에 값이랑 비교한다. 이때, 1~len(s)//2+1 개까지 돌리면서비교한다. - len(s)의 반만 돌아도 괜찮다. 어차피 최대가 ababcdcdababcdcd->2ababcdcd이기때문 2. temp라는 빈 문자열을 두고, i(1~len(s)//2+1)가 돌때마다 새롭게 만들어지는 문자열의 갯수를 비교할 것이다. 3. cnt는 같은 앞에 값이랑 뒤에 값이 같을때마다 더해주고, cnt=1일때는 그냥문자만 temp에 넣고, cnt가 1보다 크다면 cnt와 문자 둘다 넣는다 4. 그리고 나서 cnt를 다시 초기화해준다. -> aabbacc에서 2a3b로 나왔다. 이는 cnt가 제때 갱신이 되지 않아서임 5. 그리고 앞에 값을 뒤에값으로 바꿔준다. -> 앞에 값을 뒤의 .. 더보기 [programmers] 소수찾기(12921) 코드 def solution(n): numbers = set(i for i in range(2, n+1)) for i in range(2, n + 1): if i in numbers: numbers -= set(j for j in range(2 * i, n + 1, i)) print(numbers) return len(numbers) 주의할 점 1. set으로 제거하지 않고, numbers를 하나하나 다 찾으면 효율성에서 실패,,ㅠ 더보기 [programmers] 문자열 다루기 기본 코드 def solution(s): if len(s) == 4 or len(s) == 6: for i in s: if not i.isdigit(): return False return True else: return False 주의할 점 1. isdigit으로 확인가능 -> 이때 not i.isdigit()이여야 return False일때 괜찮 -> i.isdigit()이면 return True라 한번 True되면 바로 return이 되므로 안됨 2. 원래는 0 더보기 [programmers] 문자열 내 마음대로 정렬하기 풀이방법 1. 처음에는 dictionary에 key, value값으로 넣으려했는데 문제 발생 string[i][n]이 중복이 된다면, 처음 값은 마지막 값으로 바뀌고 마지막 값만 남음 -> {'c' : ['abce', 'abcd'], 'x': 'cdx'} 해서 key값 기준으로 sort하고, c 안에서 sort할 수도 있는데, 이렇게 된다면 {'c' : 'abce', 'x' : 'cdx', 'a' : 'etac'}일때랑 굳이 구분해야함 2. 그래서 내린 결론! -> 그냥 string[i]앞에 string[i][n]붙여서 sort시키고 answer이라는 리스트에 string[i][1:]넣기 코드 def solution(strings, n): for i in range(len(strings)): string.. 더보기 [programmers] 완주하지 못한 선수 풀이방법1. hash def solution(participant, completion): dic = {} res = 0 for part in participant: dic[hash(part)] = part res += hash(part) for com in completion: res -= hash(com) ans = dic[res] # key값을 넣은거니까 value값(이름)이 나온다 return ans hash는 dictionary처럼쓰는데, 실행할때마다 key값에 새로운 숫자를 제공 ex. {1543287362802119979: 'leo', -599470287568687192: 'kiki', -5395674906811354268: 'eden'} {8023414173644665412: 'leo', .. 더보기 이전 1 ··· 8 9 10 11 12 13 다음 목록 더보기