본문 바로가기

Algorithm236

[Swift][프로그래머스][math] 멀쩡한 사각형 요구능력 최대공약수(유클리드 호제법) 문제풀이 아래는 프로그래머스의 예제그림이다. 이렇게 그림만보면 어떻게 풀어야할지 머릿속이 깜깜하다. 똑같이 생긴게 4개가 보인다. w = 8, h = 12라고 했는데, 8,12랑 4가 연관이 있을까.. 생각해보면 최대공약수가 떠오르긴한다. 뭔가 확실한 해답은 아니니까 우선 넣어두고, 좌표가 (2,3), (4,6), (6,9), (8,12) 이렇게된다. 규칙성이 있는거같은데, 한 부분만 똑 떼서 보면, w = 2, h= 3일 때 쓸 수 있는 사각형은 2개 쓸 수 없는 사각형은 4개이다. (0, 0)에서 (2, 3)까지 가는데 가로로 2번가고 세로로 3번움직이면된다. 하지만, 가로로 2번가고 세로로 3번움직이면 사각형이 한번 겹친다. 그래서 X + Y - 1이라는 공식이.. 2022. 4. 25.
[Swift][프로그래머스][해시] 오픈채팅방 요구능력 해시(딕셔너리) 문제풀이 문제를 읽어보면 중간에 닉네임을 바꾸게 되면 맨 마지막 결과값에서 해당 uid에 대한 닉네임을 바꿔서 출력해줘야한다. 그래서 우선 생각한것이 uid마다 딕셔너리의 키값으로 nickName을 넣어주었다. 그리고 백준에서 주구장창하던 입력받는게 여기서 도움이 됐다. record를 각각 명령어(Enter, Leave, Change)가 저장되는 command와 아이디가 저장되는 id, 그리고 나가는 경우에는 따로 닉네임이 적혀있지 않으므로 띄어쓰기마다 구분해서 입력받은 str이 3개이상이면 닉네임까지 받는경우라서 str의 count가 3이상이면 dict에 id에 따른 nickName을 저장해주었다. 그리고 swtich문을 활용해서 Enter인 경우와 Leave인 경우를 처리해줬.. 2022. 4. 22.
[Swift][프로그래머스][완전탐색] 문자열 압축 요구능력 문자열 완전탐색 문제풀이 문제의 조건대로 문자열을 압축한다고 생각을 해보면 굳이 현재문자열의 절반을 넘는부분까지 개수를 해볼 필요가 없다. 예를들어서 abcabc가 있다. 이 문자열을 4개단위로 잘라서 압축하는게 의미가 없을것이다. 이 문제에서는 이런 그리디한 부분까지는 원하지 않은것같다. 절반이상까지 탐색해도 정답이니.. 거를방법이 없던걸수도..? 실제로 arr.count / 2 를 arr.count로 해도 정답이 나온다. 1개단위 ~ 문자열의 절반까지 압축을 할것이다. 그런데, 문제에서 적은 2a2ba3c와 같은 형태로 만들어야 result값을 리턴할 수 있겠다. 그럼 문자열을 저장하기위해 comp 프로퍼티를 하나 생성해준다. 그리고 2a2b와 같이 나타내려면 현재 내가 자르고있는 문자열이 .. 2022. 4. 21.
[Swift][구현] 백준 14503번 (로봇청소기) 요구능력 구현 문제풀이 1) 그냥 입력받는 부분이다. let nm = readLine()!.split(separator: " ").map{Int(String($0))!} let n = nm[0] let m = nm[1] let rcd = readLine()!.split(separator: " ").map{Int(String($0))!} let r = rcd[0] let c = rcd[1] let d = rcd[2] var arr = [[Int]]() for _ in 0.. 서의경우는 따로 처리를 해줘야한다. ex) 현재 동쪽을 바라보고 있는 상태로 다음 칸으로 이동했다면 d = 1이다. 그렇다면 우리가 왼쪽을 바라봐야 하니까 d = 0이된다. 그럼 우리는 동쪽에서 왼쪽인 북쪽으로 이동을 해야된다는 것이다.. 2022. 4. 20.