이진수더하기
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
를 초기화 해준다.
array
를 for
문으로 정렬하여 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()
로 변환해주는 방법으로 사용했다.