본문 바로가기

개발적인/알고리즘6

[프로그래머스] 옹알이(1) 오늘은 여러 기업의 코딩테스트를 준비하면서, 연습할겸 코딩테스트 문제를 풀어보았다. 가장 눈에 들어온 것이 문제 제목이 귀여운 옹알이라는 녀석이었는데, 문제도 참 귀엽다. 말그래도 아이가 말할 수 있는 단어를 하나하나 분리하여 아이가 말을 할 수 있는지에 대한 판단 여부를 출력하는 문제이다. 처음에는 해당 babbling 각 배열 요소에 아이가 말할 수 있는 단어가 포함이 되어있는지를 확인을 하였다. 정상적으로 결과 값이 출력되는 것을 확인할 수 있었으나, 추가적으로 `wyeoo`와 같이 사이에 `ye`를 포함하게되고 이는 또 `woo`로 줄여져 카운팅되는 문제점을 확인할 수 있었다. 이를 해결하기 위해 기존 반복문 안에 해당 단어의 인덱스를 찾고, 그 인덱스가 0으로 시작하는 것이 아니면 카운팅 되지 .. 2022. 11. 8.
[프로그래머스] JadenCase 문자열 만들기 예전에는 프로그래머스 2단계도 버거워하면서 들고왔는데, 이제는 하루에 몇 문제도 거뜬하게 풀 수 있게 되었다. 오늘 문제는 아주 킹 받아서 들고왔다,, 진짜 이 문제의 문제가 정말 무엇일까 하면서 고민을 정말 오해한 것 같다,, 발견한 문제는 '반례'인데, 문제에 대한 자세한 설명도 없고 테스트케이스가 부실한 것 같았다. (다른 유저들의 힌트에서 끝에 공백이 있으면 그 공백도 처리를 해야한다고해서 해결을 했다.) 그러니까 문제는 Python의 split() 함수로 풀게되면 안된다는 것, 그러면 끝에 공백은 날라가버린다. 처음에는 내가 평소에 하던 방식으로 split() 방식으로 풀이를 했다. 입출력 예시에 따른 결과가 잘 나와서 쉬운문제겠구나,, 하면서 제출을 했는데 실패의 늪에 빠졌다. 그래서 방법을 .. 2022. 9. 16.
[백준] 1931번 처음에 접근법을 조금 해맸다, 값은 정확하게 도출이 되지만 시간 초과가 되어서 반복문을 너무 사용한 탓으로 판단을 하고 접근법을 바꾸었다. 람다 함수를 사용하여 정렬을 시켜주어 첫 시작시간을 최솟 시작시간으로, 반복문을 돌리면서 처음 정해놓았던 최소 종료시간보다 크거나 같다면 변경을 해주면서 루프를 해주는 형식으로 코드를 구현하였다. 파이썬으로 풀이한 과정은 다음과 같다. num = int(input()) times = [] count = 1 for i in range (num): time = tuple(map(int, input().split())) times.append(time) times.sort(key = lambda x: x[0]) times.sort(key = lambda x: x[1]) e.. 2022. 5. 8.
[백준] 11047번 이번 문제도 알고리즘을 생각하고 풀면 간단하게 풀 수 있는 문제였다. 입력 첫째 줄에 동전의 개수와 원하고자 하는 최솟값을 입력하여 그에 따른 최소 동전 개수를 구하는 문제였는데, 리스트에 차곡차곡 쌓아주고, 내림차순으로 거꾸로 정렬시켜 a % b 를 했을 때, b가 더 큰 수라면 a가 그대로 출력되지 않을 경우를 조건으로 이용하여, 풀이를 하였다. 그러면 그 조건에 해당하는 동전의 종류만이 계산이 되어진다. 파이썬으로 풀이한 과정은 다음과 같다. coin, money = map(int, input().split()) num = [] for i in range (coin): num.append(int(input())) num.sort(reverse=True) result = 0 for i in range.. 2022. 5. 6.
[백준] 11399번 사실 파이썬의 내장함수를 이용하면 풀기 쉬운 문제였다, 정렬 내장 함수를 통해 오름차순 정렬을 해주고 합의 최솟값을 구해주면 되는 문제였다. 파이썬에서 한 줄로 입력을 받고자할 때는 map 내장 함수를 사용해주면 되는데, 이때 map 앞에 list를 붙여주면 입력이 끝난 뒤에는 list로 출력이 된다. 다음과 같은 키워드의 함수들을 통해 파이썬 풀이과정을 구현하였다. person = int(input()) num = list(map(int, input().split())) num.sort() result = 0 for i in range (len(num) + 1): for j in range (i): result += num[j] print(result) 2022. 5. 6.
[백준] 2839번 2839번, 설탕 배달에 관련된 문제이다. 처음에는 조건문을 통해 접근을 했지만, 실행결과는 계속 동일했지만 어디에선가 오류가 발생하였다. 그래서 다른 접근법으로 접근을 하였고, 주어진 숫자에 3의 숫자를 빼가며 5의 배수로 만드는 과정을 채택하였다. 파이썬 풀이과정은 다음과 같다 😎 num = int(input()) result = 0 if (3 2022. 5. 6.