본문 바로가기

카카오10

[Swift][프로그래머스][브루트포스] 괄호 변환 요구능력 재귀함수에 대한 이해 문제풀이 이 문제는 쪼개서 이해하면 이해가 잘되고 풀리게된다. 문제에서 주어진 절차를 무시할경우 삽질하게 되니 주의.. 1) 균형잡힌 괄호문자열 u와 v로 분류 균형잡힌 괄호문자열을 u와 v로 분류해준다. "("괄호의 개수는 leftCount, ")"괄호의 개수는 rightCount로 계산해주었다. leftCount와 rightCount가 같아지면 그건 균형잡힌 괄호문자열이 된다. func seperate(_ p: String) -> (String, String){ var leftCount = 0 var rightCount = 0 let pArr = Array(p) var u = "" var v = "" for i in 0.. String{ var result = "" if.. 2022. 5. 3.
[Swift][프로그래머스][그리디] 추석 트래픽 요구능력 그리디 문제풀이 임의시간부터 1초간 처리하는 요청의 최대 개수를 구해야한다. 오름차순 정렬까지 되어있기 때문에 우리가 원하는 시간에서부터 1초만 탐색하면 되니까 그리디로 풀게되었다. 1) 처리시간은 시작시간과 끝시간을 포함한다. 우리가 구해야할 것은 시작시간과 끝시간으로 정해졌다. 처음에 주어지는 시간이 끝시간이다. 시간을 비교해야 될 때는 가장 작은 단위에 맞춰서 비교하는게 가장좋다. 모두 우선 초단위로 바꾸고 더한다음 1000을 곱해서 밀리초를 만들어주고 밀리초를 더해주면 시간양식이 우선 완성된다. 끝시간을 저장하는 배열 endTime에 추가해준다. 그리고 시작시간을 구하려면 지속시간을 빼주면 된다. 하지만, 그냥 빼주면 안되고 문제에서 아래와 같이 되어있으니 1을 더해줘야한다. 2) 끝시간.. 2022. 4. 26.
[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.