프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

<내 코드>

def solution(heights):
    answer = []
    re_ans = []
    re_heights = list(reversed(heights))
    pk = 0
    
    while(pk != len(heights)):
        tmp = re_heights[pk]
        if(pk == len(heights)-1):
            re_ans.append(0)
            break
        
        for i in range(pk + 1, len(heights)):
            if(tmp < re_heights[i]):
                re_ans.append(len(heights) - i)
                break
            else:
                if(i == len(heights)-1):
                    re_ans.append(0)
        pk += 1
        
    answer = list(reversed(re_ans))
    return answer

reverse() 함수는 단순히 해당 리스트의 값을 뒤집고, 어떤 값을 리턴하지 않는다.

reversed는 리스트의 함수가 아닌 파이썬 자체의 내장 함수로, 리턴으로 객체를 보내기에 리스트로 값을 얻기 위해 list() 함수를 사용했다.

 

 

<다른 풀이>

def solution(h):
    ans = [0] * len(h)
    for i in range(len(h)-1, 0, -1):
        for j in range(i-1, -1, -1):
            if h[i] < h[j]:
                ans[i] = j+1
                break
    return ans

진짜 이렇게 간단하게 해결을 할 수 있다니...정말..경이롭다...

여기서 range를 시작, 끝, 스텝을 이용해 -1씩 감소하게 해 reverse, reversed 없이 가능한 걸 알게 됐다.

 

 

 

반응형

파이썬 기초 문법 

 

1. 주석(Comment)

 

  • 소스에 설명을 추가하는 것
  • 프로그램 수행에 영향이 없다.
  • 한 줄 주석 : # 뒤부터 주석 처리
  • 여러줄 주석 : ''' ''' 또는 """ """
    - 작은 따옴표 3개 또는 큰 따옴표 3개로 묶는다.
'''
	여러줄
    주석처리

'''
""" 
	여러줄
	주석처리 
"""

 

 

2. 문자열 (String)

 

파이썬의 기초 자료형 중의 하나로 문자의 나열을 말한다. 문자열을 만들려면 "abc"나 'abc' 처럼 따옴표로 묶는다.

str1 = "파이썬 Python"
str2 = "1234"

 

 

3. print( ) 함수

 

화면으로 데이터(숫자, 문자열 등)를 출력하는 함수


- 함수 : 특정 행위를 하기 위해 미리 만들어 놓은 기능

- 화면 : IDLE이나 콘솔(cmd.exe)

- 구분기호 : 콤마(,)로 값을 나열할 때 값을 구분하는 기호로 기본 값은 공백(sep = ' ') 이다.

 

print(1, 2, 3, sep = ' ')
print(1, 2, 3, sep = '') # 직접 지정 가능
print(1, 2, 3, sep = '하') 
# 출력
1 2 3
1 2 3
123
1하2하3

 

- 마지막기호 : print( ) 함수의 출력이 끝나면 출력하는 기호로 값은 '개행(줄바꿈) (end = \n)'    이다. 여기서 \n은 줄바꿈을 의미하는 특수한 문자(이스케이프 문자)이다.

 

print("안녕") # end를 따로 입력하지 않으면 기본이 개행
print("하세요", end = '\n')
print("안녕", end = '') # 직접 지정 가능
print("하세요", end = '하하하')
# 출력
안녕
하세요
안녕하세요하하하

 

- print( ) 함수에서 사용되는 기본적인 연산자

  + 기호 , 기호
용 도 연 산 --> 하나의 값을 만든다 나 열 --> 여러 값을 나열한다
print(1 + 2) # 숫자 + 숫자 ==> 덧셈 연산
print("1 + 2 =", 1 + 2)
print("1" + "2") # 문자열 + 문자열 ==> 문자연결 (하나의 문자를 만든다.)
print("1" "2") # 문자열끼리는 기호 없이 연결 가능
# 출력
3
1 + 2 = 3
12 # 정수 숫자가 아닌 문자열임
12 # 문자열

 

 

 

4. 변수 (Variable)

 

- 값을 저장하는 공간, 파이썬에서 사용하는 변수는 값을 '저장' 하는 개념이 아니라 값을 '가리킨다.'

- 프로그래밍 언어에서 = (equl, 등호) 기호는 '같다'가 아닌 '대입'으로 우변의 값을 좌변에 대입하는 것이다.

- 파이썬에서 변수를 만들때 변수명 앞에 따로 자료형(정수, 실수, 문자열 등)을 표시를 하지 않는다

- 변수명 규칙

 

① 한글 사용 가능 --> 그래도 영어로 한다.


② 특수문자(기호)는 _만 사용


③ 대소문자 구분


④ 숫자 사용 가능, 단 첫 글자로는 안된다.


⑤ 예약어 사용 불가

- 이미 시스템에서 사용하고 있는 단어
- 색상이 들어간 단어 사용금지

 

⑥ 변수명을 지을 때 의미를 부여

- 변수명만 봐도 어떤 값을 사용하는지 알 수 있도록

# 변수명 짓기 예시
#숫자 --> num1, num2, ...
#문자열 --> str1, str2, ...
#점수 --> Score1, Score2, ...
#학생 점수 --> StudentScore1, StudentScore2, ...

 

- 변수에 값 대입

# 변수에 값 대입 (1) - 하나씩
a = 1 # a라는 변수에 1을 대입
b = "2"
c = 3

print(a, b, c) # 각 변수가 가리키고 있는 값을 사용

# 변수에 값 대입 (2) - 한 번에
a, b, c = 4, 5, 6 # 순서대로 대입, 짝이 맞아야 된다.
print(a, b, c)

# 변수에 값 대입 (3) - 모두 같은 값
a = b = c = 7
print(a, b, c)
# 출력
1 2 3
4 5 6
7 7 7

 

반응형

+ Recent posts