문제

 

내가 작성한 코드
# 알파벳 소문자로 이루어진 단어 S 입력
s = input()
s_l = [i for i in s]

# 알파벳 리스트
alphabet = [i for i in 'abcdefghijklmnopqrstuvwxyz']

# 단어에 포함되어 있는 처음 등장하는 위치 출력
for alpha in alphabet:                      # a-z까지 순서대로 출력
    for index, s in enumerate(s_l):         # 단어 S의 각 알파벳 출력
        if alpha == s:                      
            print(index)
            break
        if index >= len(s_l) -1:
            print(-1)

 

코드 설명

> s는 알파벳 소문자로 이루어진 단어 S를 의미하는 변수입니다.

> s_l은 단어 S를 각 알파벳을 하나씩 분리한 리스트 변수입니다.

> alphabet 변수는 list compression을 사용하여 a-z까지 순서대로 정렬된 리스트입니다.

> 이중 반복문을 사용하여 알파벳 순서대로 소문자로 이루어진 단어 S에 단어가 존재하면 if 문과 enumerate 함수를 사용하여 index를 추출하고, 바로 break문으로 반복문을 빠져나오게 했습니다.

> 추가로, index >= len(s_l) -1 은 index 가 문자 S의 길이와 같으면 문자 S에 해당하는 알파벳이 존재하지 않음을 의미하므로 -1을 print하게 작성했습니다.

 

문제

 

내가 작성한 코드
# 숫자의 개수 N 입력
n = int(input())

# N개의 숫자의 합을 출력
number_l = str(input())

print(sum([int(i) for i in number_l]))

 

코드 설명

> 숫자의 개수를 의미하는 변수 N을 int(input()) 함수를 사용하였습니다.

> 둘째 줄에 N개의 숫자는 빈 칸 없이 입력되므로, 차라리 하나의 문자로 입력하기 위해서 str(input()) 로 코드를 작성했습니다.

> list compression 을 사용하여 N개의 숫자를 하나씩 분리하고 sum() 함수를 사용하여 리스트의 합계를 출력하도록 했습니다.

문제

 

내가 작성한 코드
# 입력 글자
n = input()

# 아스키 코드 값으로 출력
print(ord(n))

 

코드 설명

> input() 함수를 사용하여 글자를 입력받았습니다.

> ord() 함수를 사용하여 글자에 맞는 아스키 코드 값을 출력하였습니다.

문제

 

 

내가 작성한 코드(못 품)
def solution(board, moves):

    answer = []                   # 인형을 집어넣을 바구니를 의미하는 변수
    cnt = set()                   # 바구니에서 사라진 인형 수를 구할 변수
    
                                  
    for i in moves:               # moves 배열을 반복문으로 출력

        for j in board:           # board 2차 행렬을 하나씩 출력

            if j[i-1] == 0:       # i는 1부터 시작하므로 1을 빼주고, moves에 추출된 값이 0이면 통과
                continue
                
            else:                 
                
                answer.append(j[i-1])     # 0이 아닌 값을 answer(바구니)에 담기
                j[i-1] = 0                # 그리고 그 값을 0으로 바꿈
                if len(answer) == 1:      # answer 변수의 길이가 1이면 통과
                    continue
                else:
                    if answer[-2] == answer[-1]:        # 연속으로 같은 값이면 pop() 함수를 사용하여 제거
                        v = answer.pop()
                        answer.pop()
                        cnt.add(v)        # cnt 변수에 사라진 인형의 수를 추가함
                        break
                        
    return len(cnt)

> 지문 코드 테스트에서는 통과했지만... 제출 후 실행 결과는 전체 다 틀림....

> 무엇이 문제인지 모르겠다... ㅜㅜ

 

참고한 코드
def solution(board, moves):
    stacklist = []
    answer = 0
    
    for move in moves:
        for i in range(len(board)):
            if board[i][move-1] != 0:
                stacklist.append(board[i][move-1])
                board[i][move-1] = 0
                
                if len(stacklist) > 1:
                    if stacklist[-1] == stacklist[-2]:
                        stacklist.pop(-1)
                        stacklist.pop(-1)
                        answer += 2
                break
    return answer

> 내가 참고한 블로그

https://jokerldg.github.io/algorithm/2021/03/28/crane-doll.html

 

프로그래머스 크레인 인형뽑기 게임 (python 파이썬) - Tech

[[0,0,0,0,0],[0,0,1,0,3],[0,2,5,0,1],[4,2,4,4,2],[3,5,1,3,1]] [1,5,3,5,1,2,1,4] 4

jokerldg.github.io

> 전체적인 풀이 과정은 나와 같다고 할 수 있다. 하지만, 디테일한 면에서 차이가 크다는 것을 알 수 있었다!!

> 내 코드는 굉장히 깔끔하지 않아서, 나 조차도 어디서 break를 걸어줘야 되는지 헷갈린다... 코드 정리를 깔끔하게 해보자!!

> break 의 위치에 따라서 결과가 달라지므로, break를 사용할 때 어떤 위치에서 적용해야 할지 생각하자!!

문제

 

참고한 코드
def make_hansu(x):
    hansu_cnt = 0
    for i in range(1, x+1):
        num_l = list(map(int, str(i)))
        if i < 100:
            hansu_cnt += 1
        else:
            if num_l[0] - num_l[1] == num_l[1] - num_l[2]:
                hansu_cnt += 1        
    return hansu_cnt

n = int(input())
print(make_hansu(n))

> 아이디어는 같았는데, 세부적인 코드의 차이가 에러 여부를 결정하는거 같다!! 

> list(map(int, str(i)) : 이 코드를 작성하지 못해서 계속 에러가 났었다 ㅜㅜ 

> 참고한 블로그

https://ooyoung.tistory.com/65

 

백준 알고리즘 1065 [파이썬] : 한수 _ 등차수열

[Python] 백준 알고리즘 온라인 저지 1065번 : 한수 Python3 코드 1) def 함수를 생성한 경우 def hansu(num) : hansu_cnt = 0 for i in range(1, num+1): num_list = list(map(int,str(i))) if i < 100: hans..

ooyoung.tistory.com

 

코드 설명

> 블로그에는 def 함수를 생성한 경우와 생성하지 않은 경우가 있는데 저는 함수를 생성한 경우를 참고했습니다. 코드는 크게 다른게 없습니다.

> hansu_cnt 변수는 결과값을 출력하기 위한 한수 개수를 세는 변수입니다.

> 반복문을 통해서 1부터 입력된 수까지 반복을 진행합니다.

> 100 미만은 무조건 한수이기 때문에 if 문을 통해서 hansu_cnt 변수를 계속 1을 추가합니다.

> 여기서 else 문 혹은 elif 문을 적지 않고 또다른 if 문으로 적용할 시에는 에러가 발생합니다.

> num_l 변수는 각 수의 자리 수를 하나하나 나눠서 리스트에 담아둔 변수입니다. 세 자리 이상일 시에는, 첫 째 자리와 둘째자리에 차이와 둘째 자리와 셋 째자리에 차이가 같을 때 한수이기에 다음과 같이 설정하였습니다.

> 아이디어를 생각해내는데 시간이 오래걸리고, 문제를 이해하는데 시간이 굉장히 오래걸린다.... 나는 바보...

문제

 

내가 참고한 코드
natural_num = set(range(1, 10001))
generated_num = set()

for i in range(1, 10001):             # i = 850
    for j in str(i):                  # j = '8','5','0'
        i += int(j)                   # 850 + 8 + 5 + 0, i = 863
    generated_num.add(i)              # 생성자가 있는 숫자들
    
self_num = sorted(natural_num - generated_num)
for i in self_num:
    print(i)

> 문제를 풀지 못했다... ㅜㅜ

> 참고 블로그 

https://wook-2124.tistory.com/252

 

백준 알고리즘 | 4673 : 셀프 넘버 (Python / 파이썬)

셀프 넘버 성공출처다국어분류 시간 제한 메모리 제한 제출 정답 맞은 사람 정답 비율 1 초 256 MB 56038 28453 22966 50.972% https://www.acmicpc.net/problem/4673 4673번: 셀프 넘버 셀프 넘버는 1949년 인도..

wook-2124.tistory.com

 

코드 설명

> natural_num 변수는 1부터 10000까지의 전체 수 변수이다.

> generated_num 변수는 집합 자료형으로, 아래 코드에서 나온 반복 값들을 제거하기 위해 집합 자료형으로 설정

> 이중 반복문에서 i는 1부터 10000까지의 수이고, j는 각 숫자의 함수를 적용하여 나온 값을 generated_num 변수에 추가한다.

> self_num 변수는 우리가 추출해야하는 변수이고, 전체 값 natural"_num 변수에서 셀프 넘버가 아닌 함수에서 나온 값을 가진 변수 generated_num 변수를 빼면 우리가 원하는 셀프 넘버를 구할 수 있다.

> 나한테는 어려운 문제였다... 공부공부!!!

문제

 

내가 작성한 코드
def solve(a):
    ans = sum(a)
    return ans

 

 

코드 설명

> 리스트 a에 포함되어 있는 정수 n개의 합을 구하는 함수이므로 ans 변수에 sum(a) 함수를 적용하였습니다.

> 쉬움!!

문제

 

내가 작성한 코드
# 테스트 케이스 개수 입력 N
n = int(input())

# 각 테스트 케이스 학생의 수(Students)와 점수(Scores) 입력

for i in range(n):
    info = list(map(int, input().split()))
    meanScore = sum(info[1:]) / info[0]
    meanStudents = len([i for i in info[1:] if i > meanScore])
    print("{:.3f}%".format(round(meanStudents / info[0] * 100, 3)))

 

코드 설명

> n 변수에 테스트 케이스 개수 입력을 받는다.

> 반복문을 통해 테스트 케이스 수에 맞게 진행한다.

> 각 테스트에서 info 변수를 통해 학생의 수와 점수를 입력받는다.

> meanScore라는 변수는 학생들의 평균 점수를 의미한다.

> meanStudents 는 list compression 을 통해 평균 점수 이상의 학생을 구하였고, 그 수를 의미한다.

> format 함수를 통해 소수점 3자리를 출력하였습니다.

+ Recent posts