반응형
문제
- 문제 링크: 캐릭터의 좌표
해설
- 자료구조:
- 시간복잡도:
(풀이과정)
1)
2)
3)
4)
코드
(C언어)
solution 1)
더보기
#include<>
solution 2)
더보기
#include<>
solution 3)
더보기
#include<>
(C++)
solution 1)
더보기
#include<>
solution 2)
더보기
#include<>
solution 3)
더보기
#include<>
(C#)
solution 1)
더보기
#include<>
solution 2)
더보기
#include<>
solution 3)
더보기
#include<>
(Java)
solution 1)
- N: keyinput의 길이
- 반복문은 keyinput 길이만큼 반복하고 내부 연산은 모두 시간 복잡도가 O(1)이므로 최종 시간 복잡도는 O(N)
더보기
import java.util.HashMap;
class Solution {
// 보드의 경계 좌표를 벗어나는지 확인하는 메서드
private static boolean isInBounds(int x, int y, int dx, int dy) {
return Math.abs(x + dx) <= width && Math.abs(y + dy) <= height;
}
private static int width, height;
public int[] solution(String[] keyinput, int[] board) {
// 캐릭터의 초기 위치
int x = 0, y = 0;
// 각 방향에 대한 움직임
HashMap<String, int[]> moves = new HashMap<>();
moves.put("up", new int[]{0, 1});
moves.put("down", new int[]{0, -1});
moves.put("left", new int[]{-1, 0});
moves.put("right", new int[]{1, 0});
// 게임 경계 좌표
width = board[0] / 2;
height = board[1] / 2;
for (String key : keyinput) {
// 방향키에 따른 오프셋
int dx = moves.get(key)[0];
int dy = moves.get(key)[1];
// 게임 맵의 크기를 벗어나지 않는지 확인
if (isInBounds(x, y, dx, dy)) {
x += dx;
y += dy;
}
}
// 캐릭터의 위치를 반환
return new int[]{x, y};
}
}
solution 2)
더보기
#include<>
solution 3)
더보기
#include<>
(Python)
solution 1)
- N: keyinput의 길이
- 반복문은 keyinput 길이만큼 반복
- 내부 연산은 모두 O(1)
- 최종 시간 복잡도: O(N)
더보기
def solution(keyinput, board):
# 캐릭터의 초기 위치
x, y = 0, 0
# 각 방향에 대한 움직임
moves = {"up": [0, 1], "down": [0, -1], "left": [-1, 0], "right": [1, 0]}
# 게임 경계좌표
width, height = board[0] // 2, board[1] // 2
# 보드의 경계좌표를 벗어나는지 확인하는 함수
def is_in_bounds(x, y, dx, dy):
return -width <= x + dx <= width and -height <= y + dy <= height
for key in keyinput:
# 방향키에 따른 오프셋
dx, dy = moves[key]
# 게임 맵의 크기를 벗어나지 않는지 확인
if is_in_bounds(x, y, dx, dy):
x += dx
y += dy
# 캐릭터의 위치를 반환
return [x, y]
solution 2)
더보기
import
solution 3)
더보기
import
(JavaScript)
solution 1)
- N: keyinput의 길이
- 반복문은 keyinput 길이만큼 반복하고 내부 연산은 모두 시간 복잡도가 O(1)
- 최종 시간 복잡도: O(N)
더보기
function solution(keyinput, board) {
// 캐릭터의 초기 위치
let x = 0;
let y = 0;
// 각 방향에 대한 움직임
const moves = {
up: [0, 1],
down: [0, -1],
left: [-1, 0],
right: [1, 0]
};
// 게임 경계 좌표
const width = board[0] / 2;
const height = board[1] / 2;
// 보드의 경계 좌표를 벗어나는지 확인하는 함수
function isInBounds(x, y, dx, dy) {
return -width <= x + dx && x + dx <= width && -height <= y + dy && y + dy <= height;
}
for (const key of keyinput) {
// 방향키에 따른 오프셋
const [dx, dy] = moves[key];
// 게임 맵의 크기를 벗어나지 않는지 확인
if (isInBounds(x, y, dx, dy)) {
x += dx;
y += dy;
}
}
// 캐릭터의 위치 반환
return [x, y];
}
solution 2)
더보기
import
solution 3)
더보기
import
반응형
'1-4. 코딩테스트 문제집(진행중) > PCCP(Lv0)' 카테고리의 다른 글
[PCCP] Lv0: 배열의 평균값(120817) 해설 (0) | 2024.12.23 |
---|