목록밥벌이 (281)
연습장
이게 어떤 약관의 종류인지? 수집일자가 언제인지? 언제까지 보관가능한지? 파기해야되는지 아닌지 ? today : 오늘 날짜 - 파기를 판단하는 기준 일 terms : ["약관종류 기간", ... ] privacies : ["수집일 종류", ... ] result : [파기할privacies의 원소, ... ] 파기 일자 구하는 방법 개월에 + 해당 개월수를 더하고 , 일에서 1일을 뺀 값을 유지 기간 마지막 날이 된다. 이 날보다 today 가 이후라면 파기하게된다. 2021.05.02 A 의 경우 6개월이므로 2021.(05+6).02-1 => 2021.11.01 일 이된다. 2019.01.01 D 의 경우 5개월 2019.06.00일 이 되므로 -> 2019.05.28 일 이 된다. [모든 달은 28..
이 문제를 보고 언어능력이 부족해지는 느낌이 들었다. 그림으로 보면 이렇게 쉽게 이해가 되는데.. . 은 빈곳 # 은 지워야할 문서의 위치이다. 간단하게 생각하면 좌표 문제로 # 이 있는 좌표중 가장 작은곳과 가장 큰곳을 찾으면 될거같다. 1. 리스트에서 # 이 가장 먼저 나오는 원소의 위치 2. 각 원소 (. 과 # 중에서 ) 에서 # 이 가장 먼저 나오는 원소의 위치 3. 리스트에서 # 이 가장 마지막에 나오는 원소의 위치 4. 각 원소 (. 과 # 중에서 ) 에서 # 이 가장 마지막에 나오는 원소의 위치 1번을 예로 들면 [".#...", "..#..", "...#."] 리스트의 원소에서 # 은 0 1 2 에서 나오고 원소 내에서 #의 위치가 각각 1 2 3 에서 나온다. (0,1) , (2+1,3..
마치 sql 을 보는 느낌이다. data ext 뽑아내는 데이터 종류 : code, data, maximum , remain val_ext 뽑아내는 데이터 기준 값 : 숫자 sort_by : 정렬 기준 result : val_ext 의 숫자와 비교한 ext 의 해당 컬럼 값이 작은 것만 sort_by 에 따라 오름차순 정렬 . sql 문으로 하면... 편할꺼 같긴한데 1. ext 값에 따라서 data 의 몇번째 컬럼을 비교할지 2. 비교하여 해당되는 결과를 저장 3. 정렬 하여 표현 ext 에는 문자가 들어가며 이는 data 에 표기가 되어 있지않다 따라서 빈 배열 필요. def solution(data, ext, val_ext, sort_by): answer = [] # 어떤 걸로 비교하는지 ext_l..
n개의 질문 - 7개의 선택지이며 AN 의 경우 1-3 : A 의 점수 / 4 : 0 점 / 5-7 : N 의 점수 AN 5 이므로 N 1점 (네오형 1점) 으로 볼 수 있다. 그리고 NA 5 가 있으므로 A 1점 (어피치형 1점) 으로 볼 수 있다 다음과 같이 요약할 수 있으며 T C M 에 동점인 A와 M 중 사전순으로 빠른 A 가 오게되어서 TCMA 가 된다. survey 의 문자와 choice 의 숫자에 따라서 RT / CF / JM / AN 에 대해서 각각의 점수를 얻고 종합한 4자리 문자를 출력하는게 목표이다. survey를 하나씩 꺼내서 맨 앞자리에 따라서 1-3 까진 + 이고 4는 0 5-7은 - 이므로 4 - choices[i] 를 적용하면 +3 점부터 -3 점까지 가능하다. RT의 기준..
1단계 -> lower 사용 2,3,4단계 -> 정규 표현식 이용 5, 6 , 7단계 -> 길이 len 이용 정규표현식은 문자열을 처리할때 사용할 수 있다. re 모듈을 import 하며 re.sub(패턴, 대체할문자, 확인할문자열 ) ## replace 와 비슷하게 생각 할 수 있다. 각 단계를 보면서 필요한 코드를 짜 넣는다. def solution(new_id): import re # 1단계 new_id = new_id.lower() # 소문자로 # 2단계 new_id = re.sub('[^a-z0-9-_.]', '', new_id) # 기준에 따른 문자 변환 # 3단계 new_id = re.sub('\.{2,}', '.', new_id) # .. 이상 . 으로 변환 # 4단계 new_id = re..
빵 - 야채 - 고기 - 빵 순서 1231 을 1개의 값으로 한다. 2 1 1 2 3 1 2 3 1 2 1 2 3 1 2 총 2개 의 햄버거를 만들게 된다. 1. 주어진 배열의 앞에서부터 1231 이라는 순서가 나오게 되면 2. 기존 배열에서 제거하고 3. result 를 1 더하면 될거같다. 4. 그리고 제거 된 배열을 사용하여 1-3 을 반복 def solution(ingredient): answer = 0 b = "" for i in ingredient: b += str(i) while "1231" in b: b = b.replace("1231", "") answer += 1 return answer 테스트 케이스에 실패가 나오는것으로 보아 재료를 다 쌓고 하는게 아닌 쌓는 동시에 1231 이 되는..
[1,4,7] - 왼손 [3,6,9] - 오른손 [2,5,8,0] - 가까운쪽 손 거리가 같으면 hand 인 손 상하좌우로 거리 1 , 대각 2 1번 - 1.4,7 의 경우 - 왼손 고정 2번 - 3,6,9 의 경우 - 오른손 고정 def solution(numbers, hand): answer = '' for i in numbers: if i in [1,4,7]: # 1번 answer += "L" elif i in [3,6,9]: # 2번 answer +="R" else : answer +="?" return answer 3번 - 2, 5, 8, 0 -> 현재 키패드 에서 가까운 손 -> 현재 L과 R 의 위치를 알아야되며 - 목표 위치까지의 거리를 비교 - 작은쪽 또는 거리가 같으면 hand 인 손 ..
맨위에서부터 뽑을 수 있으며 뽑은 인형중 같은거 2개가 될경우 사라진다. moves 의 원소값에 따라서 0 이 아닌 숫자를 하나씩 가져오게된다. 15351214 ->43113204 가 되며 연속된 숫자는 사라지게되며 0 또한 무시해도된다. -> 43324 -> 424 즉 11과 33 이 사라졌으며 result 값은 4가 된다. 1. 빈배열에 원소들을 잘 뽑아서 넣기 2. 몇개가 터트려지는지 확인 def solution(board, moves): answer = 0 num_list = [] # 1회 뽑는 방법 h = 0 # 높이 w = 0 # 뽑을 x 축 좌표 while True: if board[h][w] == 0: # 0 일경우 한칸 더 내려감 h +=1 else : num_list.append(boa..
내가 고른 칸과 상하좌우 4칸의 색 중에서 몇개가 같은지를 알아보는 문제이다. board 는 다음과 같이 2중 배열로 주어진다. [["blue", "red", "orange", "red"], ["red", "red", "blue", "orange"], ["blue", "orange", "red", "red"], ["orange", "orange", "red", "blue"]] board[h][w] 의 색을 확인하고 board[h-1][w] board[h+1][w] board[h][w+1] board[h][w-1] 각각의 색을 확인해서 갯수를 알려주면 된다. 이렇게 테두리 값을 고를 경우에 대해서 예외 처리가 필요하다. # 선택한 기준 색 color = board[h][w] if h-1 >= 0 : # 상..
문제해석 abcde fghij klmno pqrst uvwxy z a 기준 index 5 만큼 뒤의 알파벳은 -> b c d e f -> f 이지만 skip 에 b d 가 있으므로 2칸 더 이동한 h 가 된다. u -> z 이지만 skip w 1칸 -> a k -> p s -> x 지만 skip w 1칸 -> y happy 가 된다. 문제를 해결하기 위해선 abcdefg 의 알파벳 순서를 컴퓨터에게 알려주어야한다. 2가지 방법이 있다. 1. str = " abcdefghijklmnopqrstuvwxyz" 의 문자열을 변수로 만들어서 사용하는 방법 2. 아스키 코드를 사용하는 방법 print(ord("a")) # 97 print(ord("z")) # 122 "a" 의 5번째 뒤의 알파벳을 확인하는 코드는 ..