물고기 개수가 고양이 수보다 같거나 많은 경우 / 적은 경우 두 가지 Case로 나눠서 푸는 것 까진 알겠는데
시간의 흐름을 C언어로 어떻게 표현해야할지 모르겠습니다.
예를 들어 생선이 8마리 있고 고양이가 3마리 있어서 5분 뒤의 결과를 알고 싶다면
(고양이1은 1분에 1마리, 2는 3분에 1마리, 3은 4분에 1마리라 하면)
이런 흐름으로 진행되서 5분 뒤에는 0마리가 남고 1마리가 먹히고 있는 중이라는 건 알겠습니다만...
도무지 저 이동을 어떻게 하고 시간을 어떻게 표현해야할지 모르겠습니다 ㅠ
아주 약간의 방법만 도와주시면 열심히 풀어보겠습니다... 죄송합니다!
12개의 댓글
무분별한 사용은 차단될 수 있습니다.
00KB 이상 리사이징
턴제로 생각하고
생선 행렬
고양이 행렬
고양이 시간 행렬 만들어서
고양이가 있는 자리에는 각각의 시간 불러오고
고양이가 없는 자리는 -1로 해서 에러 방지
종료시간 x에서 1씩 빼면서
고양이 시간 행렬에서 1씩 빼고 0 되면 고양이 옮기기
임베디드베어
아하 반복문으로 1씩 빼면서 0 되면 옮기는 방법이 있군요 조금 윤곽이 잡히는 거 같아요
임베디드베어
그래도 모르겠네요 에효..ㅠ
아리성애자
시간 t를 카운터로 for문 돌린다고 생각해봐
남아있는 생선수를 r 여태까지 완전히 먹은 생선수의 합을 s라 하면
t%ci==0 일때 r은 빼주고 s는 더해주면 되겠지 t==0일때 제외하고
그리고 루프 다 돌고나면 남은생선은 r 먹고있는생선은 r-s가 되겠네
어느 고양이가 몇 번째 생선을 먹었는지 알고싶은게 아니기 때문에 그림을 저렇게 그릴 필요가 없다고 생각해
임베디드베어
정말 감사해요 답변해주셔서
제가 아직 말씀하신걸 이해를 잘 못해서 좀 더 고민해볼게요 정말 감사해요 혹시 조금 더 질문드려도 될까요...?
임베디드베어
t%Ci 가 0인게 무엇을 의미할까요...?
아리성애자
t =현재시간 ci = i번째고양이가 먹는데 걸리는 시간
문제에 있는 변수라 설명을 안 썼는데 쓸걸그랬네
임베디드베어
i번째 고양이가 먹는데 걸리는 시간을 현재시간에 모듈라 연산해서 나누어 떨어지는게 어떤 의미를 가지나요?
6분뒤의 결과가 알고 싶고 1번째 고양이가 2분에 1마리를 먹는다면
6%2 = 0 이니까 r= r-1 해주고 s= s+1 해주라는 의미시죠?
그럼 4분에 1마리를 먹는다면 6%4 =! 0 인데 이 경우는 어떤 의미일까요?
아리성애자
t를 0부터 x분까지 반복문을 돌려야지
6분뒤의 결과가 알고싶고 1번째 고양이가 2분에 1마리를 먹으면
t==2 일때 2%2 == 0 이니까 r-- s++해주면되겠지 = 2분째에 다 먹었으니 r-- s++
t==3 일때 3%2 != 0 이니까 그냥 넘어가고 = 3분째에는 아직먹고있으니 남은생선, 다먹은생선 수가 변하지않음
이런식으로 마지막까지 돌리는거
물론 이건 기본틀이고 짜보면 세부조건을 몇 개 더 생각해야할거야
임베디드베어
아 정말 친절하게 설명해주셔서 감사해요
완전 제가 잘못 집고 있었네요. 아무리 그림을 그려도 표현이 잘 안되서 너무 어려웠어요!
정말 감사합니다. 말씀해주신 방법대로 진행해보겠습니다!
잉텔
이건 C언어를 못해서라기보다는 알고리즘에 대해서 표현 하는방법이 부족해서 그런듯...
먼저 저런 문제를 풀때는 수식으로서 한번에 계산가능 한 형태인가? 아니면 반복적인 방법으로 풀어야 하는 형태인가? 를 먼저 따져야됨
내 생각엔 저건 반복적인 방법으로 풀어야하는 형태인데...
저때는 초기 생선과 고양이 상태배열을 통해서 시간 t가 증가함에 따라 고양이들의 상태와 초기 생선 갯수를 계산 할 수 있음
임베디드베어
일단 저 문제는 해결했습니다!
아직 알고리즘에 대해서 배우진 못했는데 혹시 알고리즘 공부 방법에 대해서 조언해 주실 수 있으실까요? ㅠ