본문 바로가기

전체 글30

[C++] 문자열로 곱셈과 덧셈 구현하기 C++에서 long long int에도 담기지 않는 수가 있다. 9,223,372,036,854,775,807이 가장 큰 수라고 하는데, 그것보다 더 큰 수를 계산해야 하는 경우는 어떻게 해야 할까? 2^1239 을 계산하고 싶을 땐 어떻게 해야 할까? 그 방법 중 하나가 문자열로 곱셈과 덧셈을 구현하는 것이다. 원리는 아주 간단하다. 손으로 두자릿수의 곱셈과 덧셈을 해보자. 한 자리씩 더하거나 곱할 때 carry가 발생하면 다음 자리수로 넘겨서 더해준다. 따라서 손으로 하는 필산을 프로그램으로 구현한 것이 되겠다. 1. sum두 수를 문자열로 받고, 뒷 자리수부터 시작해서 carry 가 발생할 경우 자리수 올림까지 고려한다. 두 수의 덧셈을 문자열로 반환한다.이때 a[Sizea]에서 0을 빼는 건 뭐냐.. 2022. 12. 5.
[BOJ][Python3]2504.괄호의 값 문제 유형: 구현 요번에는 어떻게든 풀었지만, 좋지 않은 코드의 예시다. stack에 괄호 넣고 빼면서, 대체 어떻게 덧셈 + 곱셈을 구현하지? 라는 고민을 정말 많이 했다. 재귀로도 해보고, visited 배열을 만들기도 해보고 시도를 여러가지 하다 일반화가 잘 되지 않았다. 나름 해결한 방법으로는 score에 값을 하나씩 넣고 그 값에 대한 괄호 depth를 계산한 뒤, 같은 depth인 괄호는 더하고, 1 작은 depth를 만나면 곱하는 식으로 구현했다. 풀이 설명 ( () [ [] [] ] ) 이면 하나씩 짝 맞춰질때마다 스택에서 빼고 score에 append하면 score = [ 2, 3, 3, 3, 2] depth = [1, 2, 2, 1 , 0] 이다. 왼->오로 탐색하면서 최대 depth .. 2022. 11. 27.
[BOJ][Python3]15686.치킨 배달 문제 유형: 구현 collection에 combination을 쓰면 된다. 여담이지만 pypy로 채점 돌렸을때 메모리+런타임으로 1등 먹어서 살짝 기분이 좋았다 ㅎㅎ 시간이 지나면 한순간의 꿈일 것 같지만... 문제 포인트는 다음과 같다 1) 입력을 받으면서 집, 치킨집 위치를 튜플로 저장해서 배열에 넣어두기 2) 미리 각 집의 모든 치킨집 위치에 대한 걸 계산해서 배열에 저장해 두기(그렇다면 나중에 치킨집을 고르고 일일히 계산하지 않아도 된다) 3) 치킨집의 경우의 수를 combination으로 뽑고, 각 경우의 치킨 거리 계산하기 처음에 문제를 잘못 이해해서 현재 치킨집 수 = 남길 치킨집 수의 경우 일일히 비교하는 로직을 안 쓰고 바로 답을 구하는 모종의 방법을 사용했는데 그 로직에 문제가 있어서 .. 2022. 11. 24.
[RN/Android] CodePush 세팅(2) App Update를 해주자. 1. Staging/Production 환경설정 이전 포스트에서 codePush 세팅을 staging만 해주었는데, release 환경까지 생각해서 Production을 추가해주자. 다음을 통해 key값을 확인하고 appcenter codepush deployment list -a 사용자이름/앱이름 --displayKeys 아래와 같이 설정해주자 android { ... buildTypes { debug { ... // Note: CodePush updates should not be tested in Debug mode as they are overriden by the RN packager. However, because CodePush checks for updates.. 2022. 10. 28.