일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 데이터 분석
- 니다
- GA4
- Python
- 얼음여왕
- GA
- 독서
- 데이터문해력
- 수명예측 인공지능
- 영화 올드 줄거리
- 알파줄거리
- 명상
- 미라클 모닝
- 6시 기상
- Google Analytics
- 채용공고
- 벚꽃
- 프로그래머스
- ㅂㅂ
- 코오롱베네트
- 벚꽃개화시기
- 구글애널리틱스4
- 구글애널리틱스
- 티스토리
- 감사인사
- 기사스크랩
- 코딩
Archives
- Today
- Total
Data Analyst KIM
[Coding Club] 2023.06.22 - 프로그래머스Lv.1 문제 풀이(크기가작은부분문자열,신규아이디추천) 본문
일상/Coding Club
[Coding Club] 2023.06.22 - 프로그래머스Lv.1 문제 풀이(크기가작은부분문자열,신규아이디추천)
김두연 2023. 6. 22. 15:38반응형
활동 : Coding Club
일시 : 2023.06.22
내용 : 프로그래머스Lv.1 문제 풀이
문제 : 크기가작은부분문자열,신규아이디추천
다음주 과제 : 대충 만든 자판, 추억 점수
문제1. 신규 아이디 추천
<내코드>
def solution(new_id):
answer = ''
new_id = new_id.lower() # 1단계
for word in new_id: # 2단계
if word.isalnum() or word in '-_.':
answer += word
while '..' in answer: # 3단계
answer = answer.replace('..', '.') # 단계적으로 계속 줄임(.을 만족할 때까지)
if answer[0] == '.' and len(answer) > 1 : # 4단계
answer = answer[1:]
else :
answer
if answer[-1] == '.' :
answer = answer[:-1]
else :
answer
if answer == '' : # 5단계
answer = 'a'
else :
answer
if len(answer) >= 16: # 6단계
answer = answer[:15]
if answer[-1] == '.':
answer = answer[:-1]
if len(answer) <= 2: # 7단계
answer = answer + answer[-1] * (3-len(answer)) # 3개를 만들어주기 위해서
return answer
<다른사람 코드>
def solution(new_id):
new_id = new_id.lower() # 1단계
new_id2='' #2번
for i in range(len(new_id)):
if (new_id[i].isdigit()) | (new_id[i].isalpha()) | (new_id[i] in ['-','_','.']):
new_id2+=new_id[i]
new_id = new_id2
b = []
for i in range(len(new_id)): # 3단계
if new_id[i] == '.':
b.append(i)
# return b
# [0, 1, 2, 6, 7, 9]
#['.', '.', '.', 'b', 'a', 't', '.', '.', 'y', '.', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm']
new_id_list = list(new_id)
# return new_id_list
for i in range(len(b)-1,0,-1):
if b[i] - b[i-1] == 1:
del new_id_list[b[i]]
new_id=''
for i in new_id_list:
new_id+=i
if new_id[0] == '.': # 4단계
if len(new_id)==1:
new_id='a' # 5단계
else:
new_id = new_id[1:]
if new_id[-1] == '.':
new_id = new_id[:-1]
if len(new_id) >= 16: # 6단계
new_id = new_id[:15]
if new_id[-1] == '.':
new_id = new_id[:-1]
if len(new_id) <= 2: # 7단계
for i in range(3):
new_id += new_id[-1]
if len(new_id) == 3:
break
return new_id
3단계의 경우 나도 if문으로 사용하려고 했는데 에러나는 부분들이 많아서 while을 이용해서 조금 구현을 했다.
다른 사람들은 if로 구현을 했는데 잘 보면서 부족한 점을 알 수 있었다.
2. 크기가 작은 부분 문자열
<내코드>
나는 두가지의 코드를 준비했다. 처음에는 list방을 만들어서 조건에 해당되는 값을 넣고 비교를 했다.
하지만 list방을 만들지 않고 바로 처리가 가능할 것 같아서 2번코드도 만들었다
#1. list에 저장 후 비교
def solution(t, p):
answer = 0
t_li = [] # len(p)에 따른 t를 저장할 방
for i in range(0, len(t)-len(p)+1):
t_li.append(t[i:i+len(p)]) # len(p)에 따른 t를 t_li에 저장
for v in t_li:
if int(v) <= int(p): # 비교
answer += 1
return answer
#2. list에 저장 하지 않고 비교
# def solution(t, p):
# answer = 0
# for i in range(len(t)-len(p)+1) :
# if int(t[i:i+len(p)]) <= int(p):
# answer+=1
# return answer
<다른사람 코드>
# def solution1(t,p):
# l = []
# result = 0
# for i in range(len(p),len(t)+1):
# l.append(t[len(l):i])
#
# for i in l:
# if int(i) <= int(p):
# result += 1
# return result
#
# print(solution1(t,p))
def solution2(t,p):
result = 0
for i in range(len(t)-len(p)+1):
if int(t[i:i+len(p)]) <= int(p):
result += 1
return result
승호형도 리스트 방을 만들고 구현 후에 방을 생성하지 않는 코드를 작성하셨다.
내 코드와 조금 다른 점은
나 : t[i:i+len(p)
승호형 : t[len(l):i]
첫번째 for문에서 범위를 0부터 시작하는 것이 아닌 len(p)부터 시작하는 코드를 작성했다.
직관적이고 일반적인 방법은 아니였지만, 생각을 하는 방법이 조금 다르다는 것을 보고 신기했다.
나와 똑같은 코드를 작성하는 사람들만있다면 코딩 테스트 그룹활동을 하는 것이 의미가 없겠지만
같은 문제를 다른 방법으로 생각을 했고 공유를 했기 때문에 의미 있었다.
반응형
'일상 > Coding Club' 카테고리의 다른 글
[Coding Club] 23.07.14 (0) | 2023.07.15 |
---|---|
[Coding Club] 23.07.07 (0) | 2023.07.07 |
[Coding Club] 23.06.30 (0) | 2023.06.30 |
[Coding Club] 2023.06.15 - 프로그래머스Lv.1 문제 풀이(명예의 전당(1), 로또) (0) | 2023.06.15 |
#1. Coding Club (프로그래머스-코드처리하기,배열만들기2,무작위k개,옹알이) (0) | 2023.05.18 |