관리 메뉴

+ Repository +

[코딩테스트 입문] 코딩테스트 1일차 오답노트 본문

취업공부/코딩테스트

[코딩테스트 입문] 코딩테스트 1일차 오답노트

jaeti 2022. 12. 16. 03:46

코딩테스트 연습 : 프로그래머스 (https://school.programmers.co.kr/)

정말 오래 놓고 지냈던 코딩이라 ⌒⌒.. 이번주는 코딩테스트 입문 파트 뽀개기 목표~

개념이 제대로 잡혀야 응용도 잘 되는거임. 꼼꼼하게 기억 잘 되살리자 !!


✔️ 각도기 문제

→ Python에서 else-if 문 관계

1 2
if 조건 :
else :
 if 조건 :
  else :
   if 조건 : 
・・・ 연속
if 조건 : 
elif 조건 :
else :

+ 관계연산자 헷갈리지 말기, == 여야 등가,= 면 대입 ~

 

✔️ 짝수의 합 문제

문제 잘 읽기! 처음엔 짝수 거를필요 없는데 문제 잘못 읽어서 계속 틀렸음 ㅡㅡ

def solution(n):
    answer = 0
    for i in range (n+1):
        if i%2==0 :
            answer += i
    return answer

range함수는 끝-1까지 하나씩 업되며 돌아가니 (별다른 설정 안하면)

n+1 해야한다는 점 잊지말기 ~

 

⏳✔️ 배열 뒤집기 문제

def solution(num_list):
    answer = []
    for i in range (1,len(num_list)+1):
        answer.append(num_list[-i])
    return answer

반복문 0,1,2 ... 가 되면 num_list[-0] = num_list[0] 이 되므로 첫 값이 제대로 안 먹힌다.

따라서 1부터 시작할 수 있도록 함수안에 조건 걸어줬고, 따라서 갯수도 전체길이 +1이 되어야한다는 점 ~

range 조건문 안 건들이고 append 에서 인덱스 조절할수도 있을 것 같은데, 고민 됨.

아무리 생각해도 역순 출력이 전체값 - i , - i 두개밖에 생각 안 난다 ㅜ_ㅜ

아, [::-1] 도 된다고 한다. → 근데 또 이건 코드 돌려보니 안됨. 더 알아보기

 

✔️ 문자열 뒤집기 문제

def solution(my_string):
    answer = ''
    for i in range (len(my_string)):
        answer = my_string[::-1]
    return answer

리스트는 append 로 차곡차곡 넣어줘야하고,

문자열은 append등 매서드 안 먹히니 슬라이싱으로 접근해야함.

(+나 *는 리스트처럼 단순 더하기, 단순 반복으로 처리 됨 & 인덱싱도 됨)

 

✔️ 피자 나눠먹기 (1) → 7조각 n명 나누기

def solution(n):
    answer = 0
    answer = n//7 +1 #이렇게 하면 7명, 14명 등 경계값일 때 +1판이 된다.
    return answer

처음에 짠 코드는 이거인데, 이렇게 하면 7명, 14명 등 경계값일때 몫 이 1,2 등이므로 7명인데도 2판 사야하는 상황 됨.

def solution(n):
    answer = 0
    answer = (n-1)//7 +1
    return answer

따라서 이렇게 넣어주면 경계값 고민 해결 ~

최소인원 1명일 때 0//7+1 해도 1로 잘 나오니 깔끔하다.

* answer 주어져있어도 걍 return에 바로 수식 넣어도 될지, 주어진 변수는 최대한 써야하는건지 궁금 ~ 일단은 주어진건 쓰는 방향으로.

 

✔️ 분수의 덧셈 문제 → 기약분수로 나타내기

import fractions

def solution(denum1, num1, denum2, num2):
    answer = []
    add_denum = denum1*num2 + denum2*num1
    add_num = num1*num2
    m = fractions.Fraction(add_denum, add_num) #기약분수로?
    answer = [m.numerator, m.denominator]
    return answer

fractions 모듈 불러오기 * 기약분수 만들어줌 *

분자 -> numerator

분모 -> denominator

 

혹은 from fractions import Fracion

Fraction(a,b) 바로해도 될것이다~,,

모듈 쓰면 편하게할 수 있으니 기억하자 ...

 

✔️ 홀수 짝수 갯수구하기 문제

def solution(num_list):
    answer = []
    odd, even = 0, 0
    for i in range (len(num_list)):
        if num_list[i]%2 == 0 :
            even +=1
        else :
            odd +=1
    answer = [even, odd]
    return answer

코드길이 줄여본다면

def solution(num_list):
    answer = []
    even = 0
    for i in range (len(num_list)):
        if num_list[i]%2 == 0 :
            even +=1
    answer = [even, len(num_list)-even]
    return answer
Comments