본문 바로가기

코딩 테스트/프로그래머스98

자릿수 더하기 첫번째 코드 먼저 붙어있는 숫자를 나누는 방법이 어떤게 있을까 고민했다 문자열의 경우에는 "hello"에서 h, e, l, l, o 순서로 가져와지니까 숫자를 문자로 바꾼후에 각각 불러오면서 int()함수를 이용해서 숫자로 다시 바꿔서 더해가자! def solution(n): number = str(n) answer = 0 for i in number: answer += int(i) return answer 통과! 굳굳 링크 https://github.com/ornni/programmers/tree/main/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4/1/12931.%E2%80%85%EC%9E%90%EB%A6%BF%EC%88%98%E2%80%85%EB.. 2024. 4. 15.
이진 변환 반복하기 첫번째 코드 해당 문제를 보고 문자열을 다루는 방법과 while, for, if문을 잘 사용하면 되겠다 라는 아이디어로 출발했다. 근데 문제는 이진 변환을 하는 방법이었다;;; 방법을 몰라서.. 그래서 GPT에게 물어본 결과 bin()함수라는 이진 변환을 바로 해주는 코드가 있었다. bin()함수의 결과를 확인하기 위해 디버깅을 사용했는데, 해당 함수는 일반 문자열과 다르게 앞에 "0b"라는 문자열이 추가되어 이진 변환이 되었음을 표현하고 있었다. 그렇기 때문에 '1'이 될 때까지 문자열을 반복하기 위해서는 앞에 "0b"문자열을 제거해야 하므로 [2:]가 필요한 것을 알았다 def solution(s): answer = [] zero = 0 count = 0 while s != '1': one_index.. 2024. 4. 14.
2016년 첫번째 코드 사실 코드를 작성하면서 틀린 부분이 없었다...단지 주의할 점은 문제를 열심히 읽자는 것.. 2016년 1월 1일은 월요일이 아니라 금요일이다!!!! 먼저 문제를 보고 든 생각은 나눗셈을 이용한 문제라고 생각했다 모든 날 수를 더해서 7로 나누어 나머지 값에 따라 요일을 정하는 방법이다 ex) 1%7 = 1이므로 나머지가 1인 경우는 금요일 2%7 = 2이므로 나머지가 2인 경우는 토요일 이런식으로 월화수목금토일을 만드는 것이다!! def before_month_to_day(x): if x 8: if x % 2 == 0: days = 31*(x//2) + 30*(x//2 - 1) else: days = 31*(x//2 + 1) + 30*(x//2 - 1) return days - 1 else.. 2024. 4. 13.
가운데 글자 가져오기 첫번째 코드 이제 홀수와 짝수를 구분해서 작성하는 코드는 꽤나 익숙해졌다고 느껴진다 이것도 홀수와 짝수일 경우로 나누어 문제를 이해하기로 했다 하지만 인덱싱에 주의해야 하는데, 해당 인덱싱은 하나씩 예시를 들어서 이해하면 쉽게 이해할 수 있다! 예를 들어 홀수: 5 // 2 = 2인데, 해당 인덱싱의 위치와 동일하므로 그대로 사용한다 짝수: 4 // 2 = 2인데, 이 전 인덱스부터 시작해서 해당 인덱스까지 결과로 나와야 하므로 -1부터 +1까지 인덱싱한다 이 내용만 잘 이해하면 뚝딱 풀 수 있다! def solution(s): if len(s) % 2 == 0: start = len(s) // 2 return (s[start - 1 : start + 1]) else: return (s[len(s) //.. 2024. 4. 12.
K번째 수 첫번째 코드 인덱싱이 중요한 문제라는 생각이 들었다! commands의 길이만큼 반복할 것이지만, 해당 값들은 모두 인덱스가 1로 시작할 때 기준이므로 1을 빼고 인덱싱을 해주어야 한다. 해당 과정을 통해 새로운 리스트가 생성된다!! sort를 통해 정렬을 진행하고 새로운 리스트에서 다시 인덱싱을 진행하여 정답에 추가한다!! def solution(array, commands): answer = [] for i in range(len(commands)): start = commands[i][0] - 1 end = commands[i][1] new_array = array[start:end] new_array.sort() answer_index = commands[i][2] - 1 answer.append.. 2024. 4. 11.
덧칠하기 첫번째 코드 딱 보고 생각이 든 것은 슬라이딩 윈도우 같이 생겼네! coloring이라는 변수에 section의 맨 앞에 존재하는 원소부터 m개까지는 추가해서 section에서 제거하자 하여 section에 원소가 더 이상 존재하지 않으면 멈춘다! 라는 아이디어로 시작해서 중복과 제거, 추가가 쉬운 집합이 생각이 났다! def solution(n, m, section): answer = 0 section = set(section) while section: coloring = set(range(min(section), min(section) + m)) section = section - coloring answer += 1 return answer 해당 코드는 정답을 맞추는 것 같으나 몇 부분에서 시간 .. 2024. 4. 10.
728x90