기능 개발하면서 만났던 N+1 문제에 대해 내용 정리
N+1 문제에 대해 깊게 고민할 수 있었던 경험
이전까지는 그저 이론적으로만 알고있었지만 해당 경험을 통해 위험성을 깨닫고 중요성을 다시 한번 인식하게 됨.
def find_position(target):
keypad = [[1,2,3],[4,5,6],[7,8,9],['*',0,'#']]
for i, row in enumerate(keypad):
for j, val in enumerate(row):
if val == target:
return [i, j]
def solution(numbers, hand):
answer = ""
lPos, rPos = '*', '#'
leftSide = [1,4,7]
rightSide = [3,6,9]
for number in numbers:
if number in leftSide:
lPos = number
answer += 'L'
elif number in rightSide:
rPos = number
answer += 'R'
else:
lKeyPadPos = find_position(lPos)
rKeyPadPos = find_position(rPos)
targetKeyPadPos = find_position(number)
lDiff = abs(lKeyPadPos[0] - targetKeyPadPos[0]) + abs(lKeyPadPos[1] - targetKeyPadPos[1])
rDiff = abs(rKeyPadPos[0] - targetKeyPadPos[0]) + abs(rKeyPadPos[1] - targetKeyPadPos[1])
if lDiff < rDiff:
lPos = number
answer += 'L'
elif rDiff < lDiff:
rPos = number
answer += 'R'
else:
if(hand == 'left'):
lPos = number
answer += 'L'
else:
rPos = number
answer += 'R'
return answer
def solution(survey, choices):
answer = ''
result = { 'R' : 0, 'T' : 0, 'C' : 0, 'F' : 0, 'J' : 0, 'M' : 0, 'A' : 0, 'N' : 0}
personalCases = [['R','T'], ['C','F'], ['J','M'], ['A','N']]
for idx, choice in enumerate(choices):
if choice < 4 : #비동의 점수
result[survey[idx][0]] += 4 - choice
elif choice > 4 : #동의 점수
result[survey[idx][1]] += choice - 4
for case in personalCases:
if(result[case[0]] >= result[case[1]]):
answer += case[0]
else:
answer += case[1]
return answer
import re
def solution(new_id):
answer = ''
#1단계
new_id = new_id.lower()
#2단계
allowedCharList = [chr(i) for i in range(97,123)] + [str(i) for i in range(0,10)] + ['-'] + ['_'] + ['.']
tmp_new_id = ""
for char in new_id:
if char in allowedCharList:
tmp_new_id += char
new_id = tmp_new_id
#3단계
new_id = re.sub(r'\.{2,}', '.', new_id)
#4단계
if(len(new_id) <= 1):
if(len(new_id) == 1):
if(new_id[0] == '.'):
new_id = ''
else:
if new_id[0] == '.':
new_id = new_id[1:]
if new_id[-1] == '.':
new_id = new_id[:-1]
#5단계
if(len(new_id) == 0):
new_id = 'a'
#6단계
if(len(new_id) >= 16):
new_id = new_id[:15]
if new_id[0] == '.':
new_id = new_id[1:]
if new_id[-1] == '.':
new_id = new_id[:-1]
#7단계
if(len(new_id) <= 2):
new_id += new_id[-1] * (3 - len(new_id))
answer = new_id
return answer