[프로그래머스] 기초 코딩테스트 참고 [Python]

원준·2023년 4월 21일
0

코딩 테스트

목록 보기
4/18

1. 점 2개를 이어 평행인지 알아내기

  • 점 4개를 받아 각각 2개씩 이어서 평행인지 알아내는 것인데,
  • 내가 생각했던 방법으로는 값을 받아 직선을 만들수 있는 경우의 수를 만들어 배열을 꺼내온 후 남은 배열에 한하여 계산하는 것이다.
  • 하지만, 배열을 할당 받으면 기존의 변수까지 변경되는 상황이 발생하여, 얕은 복사와 깊은 복사에 대해 공부 하게 되었다.
# 내가 한 방법
for i in range(1, len(dots)):
        dots_result = list(dots)
        dot1 = [dots_result.pop(i), dots_result.pop(0)] 
        dot1_angle = (dot1[0][1] - dot1[1][1]) / (dot1[0][0] - dot1[1][0])
        dot2_angle = (dots_result[1][1] - dots_result[0][1]) / (dots_result[1][0] - dots_result[0][0])
        
        if dot1_angle == dot2_angle:
            return 1
# 다른 사람 참고용
def solution(dots):
    [[x1, y1], [x2, y2], [x3, y3], [x4, y4]]=dots
    answer1 = ((y1-y2)*(x3-x4) == (y3-y4)*(x1-x2))
    answer2 = ((y1-y3)*(x2-x4) == (y2-y4)*(x1-x3))
    answer3 = ((y1-y4)*(x2-x3) == (y2-y3)*(x1-x4))
    return 1 if answer1 or answer2 or answer3 else 0

2. 기초 테스트 마지막 문제

  • 마지막 답게 어려운 문제 였으나 지금까지 했던걸 토대로 풀어 보았다.
  • 해당 sound에 맞는 문자를 변환하면 되는 것으로 보였고, 없에고 난 다음에는 해당 문자가 아닌 이상 변하면 안되었다.
    • 해결 법은 '띄어쓰기' 변환 시킨다면 될까? 해서 해봤는데 되었다.
# 내가 한 코딩
def solution(babbling):
    answer = 0
    sound = ["aya", "ye", "woo", "ma"]
    for i in range(len(babbling)):
        for s in sound:
            babbling[i] = babbling[i].replace(s, " ")
            while "  " in babbling[i]:
                babbling[i] = babbling[i].replace("  ", " ")
    
    for bab in babbling:
        if bab == ' ':
            answer += 1
    
    return answer
  • 다른 사람이 한것이 더 간략해서 좋아보였지만, 내가 생각한 것이 비슷한것 같아 좋다.
# 다른 사람 참고 용
def solution(babbling):
    c = 0
    for b in babbling:
        for w in [ "aya", "ye", "woo", "ma" ]:
            if w * 2 not in b:
                b = b.replace(w, ' ')
        if len(b.strip()) == 0:
            c += 1
    return c

3. PCCP 외톨이 알파벳 코딩

profile
공부해보자

0개의 댓글