파이썬 알고리즘 : 서울에서 김서방 찾기
2024년 3월 28일 알고리즘 문제풀이 문제 서울에서 김서방 찾기 난이도 Lv.1 코드 1 2 3 4 def solution(seoul): answer = '' answer = str(seoul.index('Kim')) return f"김서방은 {answer}에 있다"
2024년 3월 28일 알고리즘 문제풀이 문제 서울에서 김서방 찾기 난이도 Lv.1 코드 1 2 3 4 def solution(seoul): answer = '' answer = str(seoul.index('Kim')) return f"김서방은 {answer}에 있다"
2024년 3월 26일 알고리즘 문제풀이 문제 압축 난이도 Lv.2 코드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 def solution(msg): answer = [] alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' arr = dict() for i in range(len(alphabet)): arr[alphabet[i]] = i+1 # 다음 추가될 색인 번호는 마지막보다 1 큰 수 last_num = len(alphabet)+1 # idx까지 볼때 idx-1 까지만 포함되므로 1로 설정 idx = 1 n = len(msg) while idx <= n: # 이미 있다면 다음이 더 긴지 확인하기 위해 idx만 1 증가 if msg[:idx] in arr: idx += 1 continue else: # 사전에 없다면, 길이가 1 작을 때가 가장 긴 단어이므로(2단계) 그 번호를 출력 answer.append(arr[msg[:idx-1]]) # 없는 단어와 색인 번호를 추가 arr[msg[:idx]] = last_num # 다음 추가될 색인 번호 1 증가 last_num += 1 # 찾아낸 가장 긴 단어는 삭제 msg = msg[idx-1:] # 인덱스 오류를 방지하기 위해 매 반복마다 길이 체크 n = len(msg) # 인덱스 초기화 idx = 1 # 마지막 반복 때 사전에 있는 단어로 끝났다면 추가되지 않는 단어가 생기므로 추가 # KAKAO에서 마지막 O는 별도로 추가해야함 if msg: answer.append(arr[msg]) return answer 매 번 느끼는 거지만, 문제가 길 때(특히 카카오)는 차근차근 시키는대로 하는게 정답이다. ...
2024년 2월 22일 알고리즘 문제풀이 문제 정수 내림차순으로 배치하기 난이도 Lv.1 코드 1 2 3 4 5 6 7 def solution(n): arr = list(str(n)) map(int,arr) arr.sort(reverse=True) map(str,arr) answer = ''.join(arr) return int(answer)
2024년 1월 26일 알고리즘 문제풀이 문제 문자열 나누기 난이도 Lv.1 코드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 def solution(s): answer = 0 while s: x = s[0] num_x = 0 not_x = 0 for i in range(len(s)): if s[i] == x: num_x += 1 else: not_x += 1 if num_x == not_x: answer += 1 s = s[i+1:] break else: return answer+1 return answer
2024년 1월 11일 알고리즘 문제풀이 문제 자릿수 더하기 난이도 Lv. 1 코드 1 2 3 4 5 6 def solution(n): answer = 0 arr = list(str(n)) for x in arr: answer += int(x) return answer
2023년 12월 29일 알고리즘 문제풀이 문제 신규 아이디 추천 난이도 Lv.1 코드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 def solution(new_id): arr = ['1','2','3','4','5','6','7','8','9','0','-','_','.'] # 1단계 new_id = new_id.lower() # 2단계 tmp = [] for i in new_id: if i.islower() == True or i in arr: tmp.append(i) new_id = ''.join(tmp) # 3단계 if len(new_id) >1: tmp = [] for i in range(len(new_id)-1): if new_id[i] == '.' and new_id[i+1] == '.': continue tmp.append(new_id[i]) tmp.append(new_id[-1]) new_id = ''.join(tmp) # 4단계 if new_id: if new_id[0] == '.': if len(new_id) == 1: new_id = '' else: new_id = new_id[1:] # 4단계 if new_id: if new_id[-1] == '.': if len(new_id) == 1: new_id = '' else: new_id = new_id[:len(new_id)-1] # 5단계 if new_id == '': new_id = 'a' # 6단계 if len(new_id) >= 16: new_id = new_id[:15] # 6단계 if new_id[-1] == '.': new_id = new_id[:len(new_id)-1] # 7단계 if len(new_id) <= 2: while len(new_id) < 3: new_id = new_id + new_id[-1] return new_id 문제에 주어진 대로, 순차적으로 해결하면 큰 어려움은 없는 문제였다. 다만 중간중간, 문자열이 존재하지 않게 되는 상황이 발생할 수 있기 때문에 이를 따로 처리하는 로직이 필요하다. 시간 많이 잡아먹는 문제라 좋은 연습이 됐다. ...
Today I Learned 날짜 2023년 12월 22일 금요일 내용 어제 막혔던 부분이 술술 해결됐다. 좋은 기분으로 크리스마스를 보낼듯! 구글 SEO 오늘 아침와서 보니 Google Search Console이 우리 서비스의 robots.txt를 인지하기 시작했다. 시간이 답이였나보다. 해당 URL을 올바르게 크롤링할 수 있는지 검사할 수 있는데 Sitemap도 잘 인지하기 시작했다. 아직 sitemap.xml로 인지하는 건 아니고 그냥 크롤링 할 사이트로 인지하고 있긴한데.. 아마 사이트맵 등록도 시간이 조금 지나면 해결되지 않을까 싶다. 바로바로 피드백이 없으니 참 답답하다. 다음주까지 기다려보고 안되면 다시 건드려봐야겠다. ...
Today I Learned 날짜 2023년 12월 21일 목요일 내용 아오 하루종일 되는게 하나도 없다 그냥 또 데모 로그인 테스트서버 까지 확인한 후 실서버로 배포했다. 그런데 실서버에서 또 작동이 안된다… 로딩페이지에서 넘어가지 않는 상황이었다. 콘솔창을 확인해보니 계정 정보는 가져왔지만 그와 연관된 shop을 가져오지 않고 있었다. 해당 계정의 shop이 하나도 없다고 뜨는 상황. 2가지 가설을 세웠다. 설정한 계정의 계정 정보와 shop의 relationship이 DB에서 깨졌다. 실서버에서만 되지 않는 것과 관련하여 로직에 문제가 있다. 1번을 증명하는 방법은, 데모가 아닌 버전으로 로그인 해보면 된다. shop을 못가져오면 당연히 로그인도 안될테니까. 하지만 문제없이 잘 됐다. ...