2023.03.31(알고리즘공부)

Vinyl Stage·2023년 3월 31일
0

개발일지

목록 보기
21/42

이진수더하기
bin()

정답
def solution(bin1, bin2):
    return bin(int(bin1, 2)+int(bin2, 2))[2:]

int()는 먼저 정수로 변환해주는데 여기서 int(bin1, 2)로 하면 bin1이 2진수값으로 인식해서 바꿔준다는 것이다.
int(bin1, 2)를 출력하게 되면 2가 나오게 된다.

그렇게 10진수로 바꾼뒤 더해서 그 값을 바깥 껍데기에 있는 bin()을 사용해 2진수로 바꿔준다

이것을 그대로 출력하게 되면 앞에 0d가 붙게 되는데 이를 자르기 위해 [2:]로 슬라이싱해서 뒷부분만 출력하게 된다.

이 외에도 비슷한 함수는 8진수로 바꿔주는 oct()와 16진수로 변환해주는 hex()가 있다.

몇번째로 큰 수인지


정답
def solution(array, height):
    array.sort()
    count = 0
    for b in array:
        if b > height:
            count += 1
    return count

내가 짠 이 코드에 대해 말하자면 먼저 array.sort()로 먼저 영구적으로 정렬해주고 하나씩 비교해서 셀 count를 초기화 해준다.
arrayfor문으로 정렬하여 b에 담고 이를 height와 비교하여서 if문으로 더 클시에 1씩 더해주는데 첫번째 예시에서는 3이 나오게 된다.

직사각형 넓이구하기

정답
def solution(dots): 
    w = max(dots)[0] - min(dots)[0]
    h = max(dots)[1] - min(dots)[1]
    area = w*h
    return area

각 꼭짓점의 최댓값에서 최솟값을 빼는 방식으로 정답을 맞추었지만 처음엔 아니었다.

처음에는 단순히 [[x1, y1], [x2, y2], [x3, y3], [x4, y4]]가 순서대로 사각형을 그려주는것으로 착각을하고 배열을 하나씩 불러와서 차잇값으로 넓이를 구했다.

하지만 이것은 어느 부분에 어떤 값이 들어갈지를 전혀 고려하지 않은 코드였다.

그래도 여기서 하나 얻은게 있다면 abs()

이 함수는 절댓값으로 반환하는 함수로 음수인경우 양수로 반환하고 양수일경우 그대로 반환하는 역할을 한다.

ex)
x = -10
print(abs(x)) #10

각각 꼭짓점을 배열에서 추출해서 더했으므로 반드시 음수가 발생할수 있는데 이를 abs()로 변환해주는 방법으로 사용했다.

profile
Life is Art

0개의 댓글