음악 이름으로 map을 만들어서 특정 음악의 list 주소를 directly 알아낼 수 있게 만들었습니다.
R, AR, P, 등 임의의 음악이 삭제되는 경우 리스트에 있는 모든 음악에 순서를 다시 메기는 recal() 함수를 호출했고,
L에서 삭제되는 음악의 경우 무조건 현재 재생중인 곡보다 앞선 곡이 삭제되는 것이기 때문에
recal을 통해 모든 음악에 순서를 다시 메길 필요 없이
현재까지 얼마나 많은 음악이 지워졌는지만 알면 된다는 관찰을 통해 최적화를 시킨 코드입니다.
그리고..
#define DAMN_JUST_BRUTE_FORCE 1
음악 재생을 1초단위로 할지, 아님 최적화를 시킬지 결정하는 변수. 혹시나 치삼지수 계산하는 부분이 잘못됐을까봐 추가.
1 : bruteforce로 계산한다. 0 : 정상적으로 계산한다.
#define CUT_MUSIC_DIRECTLY 1
문제 조건에 설명이 불명확한 부분인, "음악을 듣는 도중에 삭ㅋ제ㅋ" 해버릴건지, 음악을 다 들은 이후에 삭제할건지 결정하는 변수
1 : 음악을 듣는 도중, 치삼지수가 S를 넘어가면 바로 삭제. 0 : 음악을 다 듣고나서 치삼지수가 S를 넘어가면 삭제
#define RESET_AFTER_DELETE 0
#define RESET_AFTER_FINISHED 0
변수가 의미하는 바 그대로입니다. 문제 조건에는 음악 재생이 끝나면 반복재생이 안된다고 되있고, 음악을 삭제하고나서는 처음부터 다시 재생한다는 그런 조건이 어디에도 없긴 합니다만.... 이 문제의 조건에 대해 신뢰도가 바닥이기 때문에 추가한 변수. 아무리 데이터가 양아치여도 이 변수들이 1인 경우는 없을거라고 믿는중.
1 : Delete가 성공하면 다시 처음으로 돌아간다. (즉, 제일 상단 음악부터 다시 재생 시작) 0 : 그로지말자.
1 : 음악 재생이 전부 다 끝난 상태에서 L 명령어가 들어오면 다시 처음으로 돌아간다. (즉, 제일 상단 음악부터 다시 재생 시작) 0 : 그로지말자.
#define DONET_CARE_EVEN_CURRENT_DELETED 0
#define RESET_IF_CURRENT_DELETED 0
한창 재생중이던 음악을 삭제해버리면 어떻게 해야하는지 알 수 없어서 추가한 변수. 근데 일단 현재는 wahaha();를 통해 이러한 상황이 발생하기 전에 틀려버리는 데이터가 있으므로 현재는 0인 채로 고정
#define IS_DEAD_TRUE 1
이미 제거된 음악에 대해 E 명령어가 수행됐을 때 어떻게 처리할지 결정하는 부분. 실제로 계속 '틀렸습니다'를 받는 데이터중에 이미 지워진 음악에다가 E를 때리는 데이터가 있는 것을 확인했다. (덤으로 이미 지워진 음악에다가 R을 호출하는 일은 없는 것을 확인) 이 경우 -1을 출력할지, 아니면 ...음... 데이터를 만든 사람의 실수(?)를 믿고 삭제되기 전의 치삼지수를 출력할지 결정.
1 : 삭제된 음악은 삭제됐다고 표시 0 :삭제된 음악은 자신이 삭제됐는지 몰라서 E나 R 명령어가 들어와도 걍 멍청하게 명령을 수행.
#define PRINT_MINUS_ONE_IF_L_IS_EMPTY 0
음악리스트에 아무것도 없는데 L 명령어를 호출하면 -1을 출력할지 말지를 결정하는 변수. 이건 걍 0이리라 믿는 중..
혹시 위의 상황중에서 빠진 내용이 있는지,
그게 아니라면 제 코드의 어디에서 오류가 발생하고 있는지,
오류가 있다면 그 반례는 어떻게 되는지 확인하고 싶습니다.
불명확한 조건들이 난무하는 이 문제에서 '출력초과' 트릭을 이용해서 이것저것 쳐내고
이제 명확하게 파악해야할건 "CUT_MUSIC_DIRECTLY" 이거 하나밖에 안남았다고 생각했는데
pichulia 4년 전
일단 코드 설명을 드리자면... 기본은 double linked list이고
음악 이름으로 map을 만들어서 특정 음악의 list 주소를 directly 알아낼 수 있게 만들었습니다.
R, AR, P, 등 임의의 음악이 삭제되는 경우 리스트에 있는 모든 음악에 순서를 다시 메기는 recal() 함수를 호출했고,
L에서 삭제되는 음악의 경우 무조건 현재 재생중인 곡보다 앞선 곡이 삭제되는 것이기 때문에
recal을 통해 모든 음악에 순서를 다시 메길 필요 없이
현재까지 얼마나 많은 음악이 지워졌는지만 알면 된다는 관찰을 통해 최적화를 시킨 코드입니다.
그리고..
#define DAMN_JUST_BRUTE_FORCE 1
음악 재생을 1초단위로 할지, 아님 최적화를 시킬지 결정하는 변수. 혹시나 치삼지수 계산하는 부분이 잘못됐을까봐 추가.
1 : bruteforce로 계산한다. 0 : 정상적으로 계산한다.
#define CUT_MUSIC_DIRECTLY 1
문제 조건에 설명이 불명확한 부분인, "음악을 듣는 도중에 삭ㅋ제ㅋ" 해버릴건지, 음악을 다 들은 이후에 삭제할건지 결정하는 변수
1 : 음악을 듣는 도중, 치삼지수가 S를 넘어가면 바로 삭제. 0 : 음악을 다 듣고나서 치삼지수가 S를 넘어가면 삭제
#define RESET_AFTER_DELETE 0
#define RESET_AFTER_FINISHED 0
변수가 의미하는 바 그대로입니다. 문제 조건에는 음악 재생이 끝나면 반복재생이 안된다고 되있고, 음악을 삭제하고나서는 처음부터 다시 재생한다는 그런 조건이 어디에도 없긴 합니다만.... 이 문제의 조건에 대해 신뢰도가 바닥이기 때문에 추가한 변수. 아무리 데이터가 양아치여도 이 변수들이 1인 경우는 없을거라고 믿는중.
1 : Delete가 성공하면 다시 처음으로 돌아간다. (즉, 제일 상단 음악부터 다시 재생 시작) 0 : 그로지말자.
1 : 음악 재생이 전부 다 끝난 상태에서 L 명령어가 들어오면 다시 처음으로 돌아간다. (즉, 제일 상단 음악부터 다시 재생 시작) 0 : 그로지말자.
#define DONET_CARE_EVEN_CURRENT_DELETED 0
#define RESET_IF_CURRENT_DELETED 0
한창 재생중이던 음악을 삭제해버리면 어떻게 해야하는지 알 수 없어서 추가한 변수. 근데 일단 현재는 wahaha();를 통해 이러한 상황이 발생하기 전에 틀려버리는 데이터가 있으므로 현재는 0인 채로 고정
#define IS_DEAD_TRUE 1
이미 제거된 음악에 대해 E 명령어가 수행됐을 때 어떻게 처리할지 결정하는 부분. 실제로 계속 '틀렸습니다'를 받는 데이터중에 이미 지워진 음악에다가 E를 때리는 데이터가 있는 것을 확인했다. (덤으로 이미 지워진 음악에다가 R을 호출하는 일은 없는 것을 확인) 이 경우 -1을 출력할지, 아니면 ...음... 데이터를 만든 사람의 실수(?)를 믿고 삭제되기 전의 치삼지수를 출력할지 결정.
1 : 삭제된 음악은 삭제됐다고 표시 0 :삭제된 음악은 자신이 삭제됐는지 몰라서 E나 R 명령어가 들어와도 걍 멍청하게 명령을 수행.
#define PRINT_MINUS_ONE_IF_L_IS_EMPTY 0
음악리스트에 아무것도 없는데 L 명령어를 호출하면 -1을 출력할지 말지를 결정하는 변수. 이건 걍 0이리라 믿는 중..
혹시 위의 상황중에서 빠진 내용이 있는지,
그게 아니라면 제 코드의 어디에서 오류가 발생하고 있는지,
오류가 있다면 그 반례는 어떻게 되는지 확인하고 싶습니다.
불명확한 조건들이 난무하는 이 문제에서 '출력초과' 트릭을 이용해서 이것저것 쳐내고
이제 명확하게 파악해야할건 "CUT_MUSIC_DIRECTLY" 이거 하나밖에 안남았다고 생각했는데
그 이외의 부분에서 틀렸습니다를 받고있기 때문에..모르겠습니다...ㅠㅠ
고로 집단지성의 도움을 요청하고자 합니다.
감사합니다.