일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 22938번
- error
- React
- 네이버커넥트재단
- 스파르타코딩클럽
- ㅐㄱ이
- useState
- GIT
- 장고이미지처리
- django multi image
- python
- 스파르타
- 반응형
- 파이썬무료강의
- 무료강의
- sql
- 파이썬
- 프로그래머스
- 프론트엔드
- html
- 참가후기
- 프로그래머스입문
- jquery
- css
- SEF2022
- MongoDB
- 장고 다중이미지
- 코딩기초트레이닝
- 개인정보수집유효기간
- 20492번
- Today
- Total
코딩,해볼까
07.19. 프로그래머스 : 점의 위치 구하기, 최댓값 만들기(1), 문자열 정렬하기(1), 중복된 문자 제거 본문
페어프로그래밍 형식으로 진행해봤는데, 다양한 방법의 풀이를 해보니 너무 재밌었다...!
문제링크
점의 위치 구하기
최댓값 만들기(1)
문자열 정렬하기(1)
중복된 문자 제거
< 점의 위치 구하기 >
1. 나의 풀이
if dot[0] < 0:
if dot[1] > 0:
answer += 2
else:
answer += 3
else:
if dot[1] > 0:
answer += 1
else:
answer += 4
2. 팀원과 함께한 풀이
팀원분이 이미 프로그래머스의 신박한 풀이 방법을 보고 그 방법대로 나를 안내해주는 네비게이터가 되었다. 나는 드라이버가 되어 문제를 풀어봤다. 문제의 방향에 따라 메모를 해봤다.
dot[0] < 0 and dot[1] > 0 = 2
dot[0] < 0 and dot[1] < 0 = 3
dot[0] > 0 and dot[1] > 0 = 1
dot[0] > 0 and dot[1] < 0 = 4
우선 이 문제도 경우에 따라 기준이 딱 정해져 있다. 힌트는 배열 하나를 만든다. / -, + / 0, 1 / True, False
qu = [(3,2),(4,1)]
qu[0][0] = false, false - -
qu[0][1] = false, true - +
qu[1][0] = true, false + -
qu[1][1] = true, true + +
힌트에 따라서 경우를 다시 적어봤다. 파이썬은 0과 1을 True, False라고 생각한다. -는 false와, +는 true와 연결해서 위와 같은 배열 속 배열을 만들었다. 저 배열은 0과 1 숫자를 가지고 꺼내올 수 있다.
qu = [(3,2),(4,1)]
answer = qu[dot[0]>0][dot[1]>0]
qu의 첫 대괄호 속의 dot[0]>0 은 무조건 '양수' 일 떄 True, 숫자는 1이 된다. 이것은 (4,1) 을 가리킨다.
qu의 두번째 대괄호 속의 dot[1]>0 또한 '양수' 일 때 True, 숫자는 1이 된다. 이것은 1을 가리킨다.
둘 다 반대 '음수' 라면 숫자는 반대를 가리키게 되며 이것은 4사분면의 경우에 모두 적용될 수 있다.
< 최댓값 만들기(1) >
1. 나의 풀이
def solution(numbers):
numbers.sort()
return numbers[len(numbers)-1]*numbers[len(numbers)-2]
2. 팀원과 나의 풀이 수정
def solution(numbers):
numbers.sort()
return numbers[-1]*numbers[-2]
sort함수를 사용해서 맨 뒤의 2개 숫자를 곱하는 식을 완성하였는데, 이것을 구지 length로 하지 않고 음수를 활용할 수 있었다.
3. 배운 점
1) sort() 는 list에 사용 가능한 method이다.
num_sort = numbers.sort()
print(num_sort) #None
이렇게 새로운 변수로 선언하게 되면 내가 기대하는 결과는 numbers 리스트를 sort한 결과이지만 파이썬은 sort()를 하는 방식을 print해라 라고 알아듣는다. 따라서 sort 함수는 배열 자체를 바꾸어 그 배열을 출력하면 된다.
2) sorted(배열) 처럼 괄호 안에 무언가가 들어간다면? 이것은 내장함수이다.
num_sorted = sorted(numbers)
print(num_sorted)
sorted는 sort처럼 배열을 그대로 바꾸는 것이 아니라, 새로운 배열을 바꿔주며 기존 배열은 유지된다.
내장함수 사용은 문제풀이에서는 지양하는 것이 좋다. (공간복잡도에서 취약하다)
< 문자열 정렬하기(1) >
1. 나의 풀이
for i in my_string:
if i.isalpha() == False:
answer.append(int(i))
answer.sort()
print(answer)
이 문제를 풀 때 어려웠던 점은, string에 무작위로 글자와 숫자가 섞여있다는 것이었다. 'hi12392' 안에서는 숫자도, 문자도 모두 문자열이니까 이것을 어떻게 가려야 할지 굉장히 어렵게 느껴졌다. 하지만 팀원분이 method를 사용해보라는 힌트를 주셔서 여러가지를 사용해보고 풀이를 하게 되었다. print(dir()) 을 생활화하자!
< 중복된 문자 제거 >
1. 나의 풀이
def solution(my_string):
answer = ''
for i in my_string:
if i not in answer:
answer += i
return answer
my_string에서 글자를 하나씩 꺼내 answer에 더해준다. 이 때 answer에 들어있는 글자는 더하지 않기 위해서 not in을 사용한 간단한 풀이방법이다.
2. 다른사람의 풀이
def solution(my_string):
return ''.join(dict.fromkeys(my_string))
dict.fromkeys는 딕셔너리를 생성해주는 함수라고 한다. key값은 고유한 값이기 때문에 이를 이용한 것 같다. 다른 풀이에서 사용해보고 나서 자세한 사용 방법을 적어봐야겠다.
'Back > TIL' 카테고리의 다른 글
07.21. 프로그래머스 : 숫자 찾기, 문자열 정렬하기(2), 머쓱이보다 키 큰 사람 (1) | 2023.07.21 |
---|---|
07.20. 프로그래머스 : 대문자와 소문자, 인덱스 바꾸기, 배열의 유사도 (0) | 2023.07.21 |
07.17 - 18. 프로그래머스 : 배열 두 배 만들기, 배열 뒤집기, 문자열 뒤집기, 가위 바위 보 (0) | 2023.07.18 |
07.16. 프로그래머스 : 몫 구하기, 최빈값 구하기 (0) | 2023.07.16 |
07.15. 프로그래머스 : 2의 영역 (0) | 2023.07.15 |