실전 문제 질문 하나만 드립니다 ㅠ
327
작성한 질문수 12
강사님 안녕하세요, 제가 이번에 모 유니콘 기업에 코딩테스트를 보게 되었는데요.
1반과 2반을 키순대로 나열하는데, 키순이 안맞는 곳만 상대방 반의 같은 index 위치의 학생과 교환이 가능합니다. 최소한 몇번 교환을 해야 만족하는지 구하는게 전부입니다. 너무 간단해 보여서 저는
키순이 안맞는 위치를 체크한 후,
같은 index 위치의 다른 반 애를 데려왔을때, 키순이 앞뒤로 안맞는지 체크, 안맞으면 안바꿈
이런식으로만 했는데, 테스트 케이스 다 틀리네요 ㅠ
얘는 그냥 구현일가요? 아니면 어떤 알고리즘이 있는걸가요?
예제1)
int[] height1 = {150, 170, 180, 180};
int[] height2 = {150, 160, 170, 190};답 : 횟수 1 (3번 인덱스 끼리만 교환)
예제2)
int[] height1 = {130, 140};
int[] height2 = {130, 140};답 : 횟수 0
답변 1
0
안녕하세요^^
jangkeya님의 논리로는 반례가 많아 보입니다.
이 문제는 다이나믹으로 해결가능해 보입니다. 이 문제의 다이나믹 정의는 다음과 같습니다.
dy[i][0] : i번 인덱스를 교환해서 0번부터 i번까지 두 배열이 정렬되는 최소 교환횟수
dy[i][1] : i번 인덱스를 교환하지 않고 0번부터 i번까지 두 배열이 정렬되는 최소 교환횟수
최종적으로 답은 dy[n-1][0]과 dy[n-1][1] 중 작은 값을 답으로 하면 될 것 같습니다.
한 번 도전해 보세요. 안되면 답글 다세요. 제가 한 번 시도해 볼께요.
비밀번호
0
69
1
과일 가져가기 이러한 경우에는 반례가 생기지 않나요?
0
164
2
cpu 스케줄링
0
107
2
외부 문제 질문
0
122
2
가장 많이 사용된 회의실
0
118
2
심사위원 문제 시간복잡도 질문
0
127
1
현관문 출입순서
0
98
1
미로의 최단거리 통로
0
74
1
집으로 이동 문제 코드
0
125
1
채점 사이트 개설
0
161
2
송아지를 잡자
1
110
1
다익스트라 + 환승횟수
0
135
2
문제풀이 해설 질문입니다.
0
124
2
"이동 횟수" 문제가 변형된다면?
0
156
2
예제 3번의 정답이 이해가 되지 않아요 선생님 ㅜㅜ
0
249
1
"비밀번호" 문제 확인 부탁드립니다!
0
171
1
최대 길이 연속수열 질문
0
193
1
잃어버린 강아지 문제 count 관련 질문있습니다
0
204
1
바둑대회 질문입니당
0
222
1
5. "최대 길이 바이토닉 수열" 에서 설명해주신 방법과 제가 직접 구현한 방법이 달라, 확인 한번 부탁드립니다
0
311
1
알파코드 풀이질문입니다
0
218
1
7번 비밀 번호 문제에 시간복잡도가 궁금합니다!
0
164
1
혹시 이렇게 작성해도 괜찮나요?
0
287
2
문제풀이 확인 부탁드립니다.
0
246
1





