https://programmers.co.kr/learn/courses/30/lessons/42577 코딩테스트 연습 - 전화번호 목록 전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다. 전화번호가 다음과 같을 경우, 구조대 전화번호는 영석이의 전화번호의 접두사입니다. 구조 programmers.co.kr 정말 이해가 안되는 문제였다!! 문제가 이해가 안되는게 아니고 내가 푼 풀이는 왜 통과가 안되는지?가 의문인 문제이다 ㅋㅋㅋㅋ... 해시 문제라고 되어있지만 나는 해시를 이용하지 않고 풀었다. 첫번째 시도 - 테스트 케이스 왕창 틀림, 효율성 2/4 틀림 def solution(phone_book): answer = True phone_book = sorte..
https://iambeginnerdeveloper.tistory.com/155 OS | 컴파일러와 인터프리터 | Compiler, Interpreter - 컴파일러(compiler)란? 컴파일러는 특정 프로그래밍 언어로 쓰여 있는 문서를 다른 프로그래밍 언어로 옮기는 언어 번역 프로그램으로, high-level programming language를 실행 프로그램으로 만들기 위 iambeginnerdeveloper.tistory.com 위의 글을 읽으면 좀 더 이해가 쉽습니다! Python과 C++은 기능과 동작이 다른 언어이다. 두 언어 모두 객체 지향 언어이지만 각각의 특징과 차이점이 있다. - Python의 특징 파이썬은 가독성과 신뢰성이 높은 객체 지향 프로그래밍 언어이다. 또, 구문이 명확해서..
https://programmers.co.kr/learn/courses/30/lessons/76501 코딩테스트 연습 - 음양 더하기 어떤 정수들이 있습니다. 이 정수들의 절댓값을 차례대로 담은 정수 배열 absolutes와 이 정수들의 부호를 차례대로 담은 불리언 배열 signs가 매개변수로 주어집니다. 실제 정수들의 합을 구하여 re programmers.co.kr absolutes와 signs의 길이가 같기 때문에 for문 한번으로 해결할 수 있었다. 참일 땐 양수니까 그대로 뒀고 거짓을 땐 음수이므로 음수로 바꾸기 위해 값에 2를 곱해서 빼주었다. 정답 코드 def solution(absolutes, signs): for i in range(len(absolutes)) : if signs[i] =..
https://programmers.co.kr/learn/courses/30/lessons/12950 프로그래머스 레벨1에서 '행렬의 덧셈' 문제를 풀었다. 쉽다고 생각하고 풀었는데 막상 아이디어가 떠오르지 않아 시간을 생각보다 많이 썼다. 2차원 배열로 어떻게 출력을 할 수 있을까 생각을 하다가 굳이 answr라는 list를 만들어서 거기에 넣을 필요가 없을 것 같았다. 꼼수를 부릴 수 있을 것 같았고 arr1의 원소와 같은 위치에 있는 arr2의 원소들을 더해 주기만 하면 answr 리스트 없이 정답을 출력할 수 있었다. 정답 코드 def solution(arr1, arr2): for i in range(len(arr1)) : for j in range(len(arr1[0])) : arr1[i][j]..
https://programmers.co.kr/learn/courses/30/lessons/12947 코딩테스트 연습 - 하샤드 수 양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다. 예를 들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다. 자연수 x를 입력받아 x가 하 programmers.co.kr 모든 자리수의 합을 구하는 부분에서 조금 버벅거렸는데 sum을 쓰기 위해서 각 자리수를 쪼갠 리스트를 만들었다. sum을 쓰려면 쪼갠 각 자리수들이 int형이어하는데 map을 사용하려면 x는 string이어야해서 좀 깔끔하지 못하게 코드를 짠 것 같다... 정답 코드 def solution(x): X = list(map(int, str..
https://programmers.co.kr/learn/courses/30/lessons/43165 코딩테스트 연습 - 타겟 넘버 n개의 음이 아닌 정수가 있습니다. 이 수를 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 있습니다. -1+1+1+1+1 = 3 +1-1+1+1+ programmers.co.kr 프로그래머스에서 DFS/BFS 문제인 타겟 넘버를 풀었다. 이코테에서 간단한 문제만 보다가 레벨2인데도 너무 어려웠다.. 더 많이 공부해야할 것 같다 ㅠ 혼자 힘으로 풀 수 없어 다른 사람들의 풀이를 참고해서 겨우 풀었다. 사실 이해를 제대로 했는지도 모르겠고 ㅋㅋ... 모든 풀이와 개념은 해당 링크 를 참고..
https://programmers.co.kr/learn/courses/30/lessons/42746?language=python3 코딩테스트 연습 - 가장 큰 수 0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 programmers.co.kr 문자열 정렬 문제였는데.. 꽤 오래 걸렸다.. 바본가.. 처음 문제 보고 permutations 이용해서 풀어보려고 했다. 생각해보니 너무 불필요한 과정일 것 같았고 결국 또! 다른 사람의 풀이를 찾아다녔다. 여기서 이 문제는 '정렬'이라는 걸 잊고 있었다. 문자열 정..
https://programmers.co.kr/learn/courses/30/lessons/12943 코딩테스트 연습 - 콜라츠 추측 1937년 Collatz란 사람에 의해 제기된 이 추측은, 주어진 수가 1이 될때까지 다음 작업을 반복하면, 모든 수를 1로 만들 수 있다는 추측입니다. 작업은 다음과 같습니다. 1-1. 입력된 수가 짝수라면 2 programmers.co.kr 프로그래머스 레벨1 연습문제인 콜라츠 추측을 풀었다. while의 조건문만 제대로 입력하면 금방 풀 수 있는 문제이다. 정답 코드 def solution(num): answer = 0 while num != 1 : if answer > 500 : return -1 if num % 2 == 0 : num = num/2 elif num..
https://programmers.co.kr/learn/courses/30/lessons/12940 코딩테스트 연습 - 최대공약수와 최소공배수 두 수를 입력받아 두 수의 최대공약수와 최소공배수를 반환하는 함수, solution을 완성해 보세요. 배열의 맨 앞에 최대공약수, 그다음 최소공배수를 넣어 반환하면 됩니다. 예를 들어 두 수 3, 12의 programmers.co.kr 프로그래머스 레벨1에 있는 최대공약수와 최고공배수 구하는 문제를 풀었다. 처음 문제를 보고 2개의 for문을 사용해서 최소 공배수와 최대 공약수를 n,m별로 구해야하나 생각을 했는데 그렇게 되면 시간 복잡도가 굉장히 비효율적일 것 같아서 다른 방법을 찾아봤다. 찾아보니까 최대공약수는 유클리드 호제법이라는 알고리즘으로 구할 수 있었..
https://programmers.co.kr/learn/courses/30/lessons/12934 코딩테스트 연습 - 정수 제곱근 판별 임의의 양의 정수 n에 대해, n이 어떤 양의 정수 x의 제곱인지 아닌지 판단하려 합니다. n이 양의 정수 x의 제곱이라면 x+1의 제곱을 리턴하고, n이 양의 정수 x의 제곱이 아니라면 -1을 리턴하는 함 programmers.co.kr 프로그래머스에서 레벨1 연습문제를 왕창 풀다가 기억해두면 좋을 것 같은 문제라서 따로 포스팅을 하게 되었다. 정수 제곱급 판별 문제로 math 모듈을 쓰면 엄청 편하다! 정답 코드 import math def solution(n): if math.sqrt(n).is_integer() : return (math.sqrt(n)+1)**..