모험가 길드 문제는 공포도가 x인 모험가는 반드시 x명 이상으로 구성한 모험가 그룹에 참여해야 여행을 떠날 수 있습니다.

첫째줄에 n이 주어지고 둘째 줄에 각 모험가의 공포도의 값을 N 이하의 자연수로 주어집니다.

모든 모험가를 특정한 그룹에 넣을 필요는 없습니다.

여행을 떠날 수 있는 그룹 수의 최대값을 구하는 프로그램을 작성하세요.

<나의 풀이>

from collections import deque

if __name__ == '__main__':
    n = int(input())
    list1 = list(map(int, input().split()))
    list1.sort(reverse=True)
    arr = deque(list1)
    result = 0

    while arr:
        x = arr[0]

        if x <= len(arr):
            for i in range(x):
                arr.popleft()
        else:
            break
        result += 1

    print(result)

나의 풀이는 잘못 되었습니다. 해당 알고리즘은 그리디가 적용되어야 됩니다. 하지만 저는 가장 공포도가 높은 모험가를

먼저 파티에 넣는 식으로 하였기 때문에 그룹의 수는 가작 적은 그룹의 수가 리턴 될 것입니다. 그것을 알고도 위와같은 알고리즘을 사용한 것은 가장 큰 값을 기준으로 해야 나중에 뒤에서 더 큰 공포를 가진 모험가가 나타나서 위 조건을 이탈하는 케이스를 생각했기 때문입니다.

아래는 정답입니다.

n = int(input())
data = list(map(int, input().split()))
data.sort()

result = 0 # 총 그룹의 수
count = 0 # 현재 그룹에 포함된 모험가의 수

for i in data: # 공포도를 낮은 것부터 하나씩 확인하며
	count += 1
    if count >= i:
    	result += 1
        count = 0

 

정답을 보면 if count >= i:

라는 조건이 있습니다. 해당 조건 덕분에 뒤에서 갑자기 공포도가 큰 모험가가 포함 되어도 공포도가 x인 모험가는 반드시 x명 이상으로 구성한 모험가 그룹에 참여해야 여행을 떠날수 있는 조건을 만족할 수 있습니다.

 

'알고리즘' 카테고리의 다른 글

[이코테] 문자열 재정렬  (0) 2022.01.04
볼링공 고르기[이코테] 그리디  (0) 2022.01.03
백준 피보나치의 수5  (0) 2021.12.29
백준 설탕 배달 dp  (0) 2021.12.26
떡복기 떡 만들기 이진 탐색  (0) 2021.12.20

https://github.com/jojoldu/freelec-springboot2-webservice/issues/724

 

[오류] p.364 p.365 업데이트 되지 않는 오류입니다. · Issue #724 · jojoldu/freelec-springboot2-webservice

기존에 올라온 질문이 아닌지 먼저 검색해주세요! 가장 자주 나온 제보 P.105 @PutMapping("/api/v1/posts") P.111 Posts.update 어떤 오류인가요? 오류설명: 현재 구동되어있는 app이 꺼지지 않고 실행되서 그런

github.com

위 글을 참조하였습니다.

 

해당 오류가 발생하여 구글에 검색하니 포트 충돌 오류였다.

새로운 프로젝트가 8080포트를 사용하려는데 이미 8080 포트를 사용하고 있어서 나는 오류이다.

 

deploy.sh 파일에 현재 실행중인 나의 프로젝트를 중단시키는 부분이 있는데 잘 실행되지 않은 것 같다.

CURRENT_PID=$(pgrep -fl FocusOnBitcoin | grep jar | awk '{print $1}')

echo "현재 구동 중인 애플리케이션 pid: $CURRENT_PID"

if [ -z "$CURRENT_PID" ]; then
  echo "> 현재 구동 중인 애플리케이션이 없음으로 종료하지 않습니다."
else
  echo "> kill -15 $CURRENT_PID"
  kill 15 $CURRENT_PID
  sleep 5
fi

기존 프로젝트를 종료하려고 할때 deploy.sh 파일에는 jar 타입을 찾고 있지만 현재 사용중인 프로젝트는 java 타입이라서 종료가 되지 않고 계속 실행되고 있었다. 

따라서 포트 충돌 문제가 난 것이다.

해결책으로 

CURRENT_PID=$(pgrep -fl FocusOnBitcoin | grep jar | awk '{print $1}')

위 명령어를 아래로 교체한다.

CURRENT_PID=$(pgrep -fl FocusOnBitcoin | grep java | awk '{print $1}')

 

처음으로 배포후 자동으로 ec2 서버에 zip 파일을 올리도록 설정하였습니다.

그런데 위의 오류가 발생하였습니다.

위의 오류는 태그 이름의 매칭 실패에 관한 에러입니다.

해결 방법은 ec2>인스턴스에서 인스턴스의 이름과 배포 그룹의 태그 Name의 value값이 일치해야합니다.

https://www.acmicpc.net/problem/10870

 

10870번: 피보나치 수 5

피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다. 이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n ≥ 2)가

www.acmicpc.net

n = int(input())
d = [0]*(n+1)
if n > 0:
    d[1] = 1

if n >= 2:
    for i in range(2, n+1):
        d[i] = d[i-1] + d[i-2]
print(d[n])

n이 0일 경우 dp[1]은 index out of bound 에러가 발생하기 때문에 조건문을 활용해야 한다.

'알고리즘' 카테고리의 다른 글

볼링공 고르기[이코테] 그리디  (0) 2022.01.03
이것이 코딩 테스트이다 - 모험가 길드  (0) 2022.01.03
백준 설탕 배달 dp  (0) 2021.12.26
떡복기 떡 만들기 이진 탐색  (0) 2021.12.20
부품 찾기  (0) 2021.12.19

.travis.yml 파일을 생성하고 추가한다음 travis 페이지에 가보니 해당 오류가 발생하였다.

 

위 오류를 해결하기 위해 아래 블로그 글을 참조하였다.

https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=ggomjae&logNo=221778504421 

 

Travis CI : < ./gradlew : Permission denied >

< ./gradlew : Permission denied > Travis 를 이용하고 빌드를 시작하려니 error 가 떴다. 보면 ....

blog.naver.com

 

위 오류가 발생하는 이유는 gradlew 파일의 권한 문제 때문이다. 해당 문제해결을 위해서 

chmod +x gradlew 명령어를 사용한다.

 

.travis.yml 파일에 아래 코드를 추가한다.

before_install:
  - chmod +x gradlew

 

 

위 코드 추가로 인해서 성공적으로 배포가 되었다.

 

https://www.acmicpc.net/problem/2839

 

2839번: 설탕 배달

상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그

www.acmicpc.net

 

설탕 배달은 DP와 그리드 방식으로 해결 가능합니다. 사실 시간이 적다면 그리드 방식이 좋을 수 있지만

해당 문제는 DP 문제로 분류되어있으니 DP 방식으로 풀도록 하겠습니다.

 

해당 문제의 점화식입니다.

min(dp[j], dp[j-arr[i]] +1)

 

해당 문제의 풀이입니다.

n = int(input())
arr = [3, 5]
dp = [5001]*(n+1)
dp[0] = 0

for i in range(len(arr)):
    for j in range(arr[i], n+1):
        if dp[j - arr[i]] != 5001:
            dp[j] = min(dp[j], dp[j-arr[i]] +1)
if dp[n] == 5001:
    print(-1)
else:
    print(dp[n])

동적 계획법 방식중에서도 다운 - 탑 방식을 선택했습니다.

DP의 크기는 N+1의 크기로 생성합니다.

DP의 0번째 인덱스의 값은 0으로 생성하고 나머지는 5001의 값을 넣습니다.

5001의 값을 넣은 이유는 5001 값이 가장 최고 값이 될 것이기 때문입니다.

설탕 봉투의 키로 수는 3KG, 5KG 가 있습니다.

따라서 작은 설탕 봉투 3KG를 먼저 DP에값을 채워 넣습니다.

그다음에 5KG 봉투를 채워 넣습니다.

5키로 봉투를 채워 넣을 때 만약 현재 인덱스가 8이면 

8에는 5001의 값이 들어가 있을 것입니다.

8일 때 DP [8-5]의 값을 확인할 것이고 확인된 값은 DP [3] = 1 일 것입니다.

값을 비교하게되면 min(5001, 2)가 될 것이고 2의 값이 들어가게 될 것입니다.

위와 같은 방식으로 해당 인덱스의 가장 작은 수가 값으로 들어올 것입니다.

'알고리즘' 카테고리의 다른 글

이것이 코딩 테스트이다 - 모험가 길드  (0) 2022.01.03
백준 피보나치의 수5  (0) 2021.12.29
떡복기 떡 만들기 이진 탐색  (0) 2021.12.20
부품 찾기  (0) 2021.12.19
두 배열의 원소 교체  (0) 2021.12.19

https://conservative-vector.tistory.com/entry/JPA-Could-not-extract-ResultSet-%EC%98%A4%EB%A5%98

 

[Spring] Could not extract ResultSet; 오류

문제 검색 기능에서 오류 로컬에선 잘 돌아가던게 AWS 서버로 올리니까 에러가 남 could not extract ResultSet; SQL; nested exception is org.hibernate.exception.SQLGrammarException; 원인 DB문제! 데이터제..

conservative-vector.tistory.com

위 글을 참조하였습니다.

 

{"timestamp":"2021-12-25T15:31:06.672+0000","status":500,"error":"Internal Server Error","message":"could not extract ResultSet; SQL [n/a]; nested exception is org.hibernate.exception.SQLGrammarException: could not extract ResultSet","path":"/"}

 

오류는 위와같습니다.

아무래도 필요한 테이블을 제대로 생성하지 않은 것 같습니다.

 

Gradle build daemon disappeared unexpectedly (it may have been killed or may have crashed)

빌드가 굉장히 오래 걸려서 혹시나 해서 아래 명령어로 8080포트를 사용중인 프로세스가 있는지 확인하였다.

netstat -tulpn | grep 8080

쓰는 프로세스가 존재하였다.

fuser -k -n tcp port 8080 로 해당 포트 사용을 중지하였다.

그렇게 오류를 해결할 수 있었다.

위 오류는 gradle/wrapper에서 gradle-wrapper.jar 파일이 없어서 발생하는 오류였다.

그래서 .gitignore에서 *.jar을 제거하니 gradle-wrapper.jar 파일을 커밋 할 수 있었다.

'오늘만난오류' 카테고리의 다른 글

could not extract ResultSet  (0) 2021.12.26
Gradle build daemon disappeared unexpectedly  (0) 2021.12.26
Can't update(has no tracked branch)  (0) 2021.12.25
ERR_ABORED 404  (0) 2021.12.25
Cannot resolve MVC view '???'  (0) 2021.12.25

깃 크라켄을 사용하다가 실수로 푸시를 잘못하여 이전 브랜치의 버전으로 업데이트 되버려서 현재 작성하던 내용이 뒤돌아 가버렸다 그래서 다시 깃허브 파일을 복구하고 프로젝트를 업데이트해야되는데 해당 오류가 발생하였다.

해당 오류를 해결하기 위해서 Choose upstream branch를 선택하고 branch를 master로 하니 다행이 복구가 되었다.

+ Recent posts