>알고리즘 문제
1. 문제
2. 솔루션
class Solution {
fun solution(keymap: Array<String>, targets: Array<String>): IntArray {
var answer: IntArray = intArrayOf()
var map=mutableMapOf<Char,Int>()
for(i:Char in 'A'..'Z'){
map.put(i,-1)
}
for(i:String in keymap){
for(j:Int in 0..i.length-1){
//체크할 알파벳
var tmp=i[j]
//현재 해당 알파벳의 입력을 위한 클릭수
val mtmp=map[tmp]?:throw IllegalArgumentException()
//해당 알파벳 입력법이 처음 나왔거나 앞서 저장한 알파벳 입력법보다 입력횟수가 적은경우
if(mtmp==-1||(mtmp>-1&&mtmp>j)){
map[tmp]=j+1
}
}
}
for(i:String in targets){
var total=0
for(j:Char in i){
val tmp=map[j]?:throw IllegalArgumentException()
if(tmp==-1){
total=-1
break
}
total+=tmp
}
answer+=total
}
return answer
}
}
1)mutableMap을 이용하여 A부터 Z까지를 key로 하고 해당 알파벳 입력을 위한 클릭횟수를 value하는 map을 만들음
2)처음 맵 생성시 value를 모두 -1로 해서 입력이 불가능한 알파벳을 구분할 수 있도록 함.
3)map의 value가 nullable이라 에러가 나는 것을 ?:throw IllegalArgumentException() 구문을 통해 예외처리 해서 해결함
=>null인 경우가 존재하지 않는 코드기에 대체값대신 예외처리를 사용
3. 새로 알게 된 것.
<1>mutableMap<>()
-선언:주로 mutableMapOf<자료형, 자료형>(key to value, ...)로 선언
-value가 nullable이므로 nullcheck를 잘해야함.
<2>null 처리
-함수 사용시 앞이 null일수있는경우: a?.function() 형태로 사용
-null이 나오는 경우 처리: ?:를 사용하면 뒤에 null인경우 대체값을 넣거나 throw를 통해 예외처리할 수 있음
>git&github
*터미널 사용법(gitbash): 원하는 폴더에 좌클릭하여 open gitbash here클릭
*복사 붙여넣기는 ctrl+insert & shift+insert
1. 필수 리눅스 명령어
1)pwd(print working directory): 현재 작업중인 경로
=>경로에 ~로 되어있으면 Desktop상위경로인 Home이라는 경로에 위치해 있음을 뜻함
2)ls(list): 폴더 내의 폴더 및 파일 내역
=>ls -a: 숨겨진(보통 .으로 시작)파일내역까지 모두 보여줌
3)cd: 해당 위치로 이동
-cd 폴더명: 폴더로 이동
-cd ..: 상위 폴더로 이동동
-cd 상대경로: 해당 경로의 위치로 이동
4) mkdir 폴더명: 현재 경로에서 폴더를 생성
5) touch 파일명: 현재경로에서 파일을 생성
2. git
1)git이란
-코드 변경점 기록
-소프트웨어의 변경사항을 추적,통제하는 것
2)git과 github
-git: 코드 변경점 기록
-github: 온라인 백업, 공유, 협업
3)git 필수 명령어
<1>git init: 정확한 폴더에서 프로젝트 시작전 한번만 입력하면 됨
=>.git이라는 숨겨진 폴더 생성
<2>git add&commit
-git add 파일명: 커밋할 파일을 지정
=>현재 작업중인 경로내 모든 파일을 지정하려면 파일명에 . 을 찍으면 됨(git add .)
-git commit -m "메세지": 지정된 파일들을 커밋
-git status:변경된 파일중 커밋이 안 된 파일을 체크할 수 있음
<3>git log:커밋 내역과 메세지를 로그형태로 확인할 수 있게 해줌 -버전별 id도 확인 가능
=>end뜨면서 안눌리면 q누르면 됨
-git diff: git add 전 후의 차이점 확인 가능
-git diff '버전id1'..'버전id2': 두 버전간 차이점 확인
-git reset --hard `버전id` : 버전 id로 돌아가는 명령
-git revert `버전id` : 버전 id의 커밋을 취소한 내용을 새로운 버전으로 만드는 명령
3.github
1. git repository만들어 업로드하기
-repository생성
-업로드한 폴더의 터미널을 열어 새로생긴 repository페이지의 붉은 박스내 코드 입력
2.협업
1)코드 복사해오기:
-깃허브 repository에서 주소 복사해옴
-복사할 폴더에서 터미널을 열어줌
-git clone 주소 .: 점찍는것 잊지 않기
2)코드 변경 후 올리기
-우선 git add &commit
-git push origin 브랜치명: 우선은 main으로 작성
3)다른사람이 작성한 코트 가져오기
-git pull origin 브랜치명: 일단은 main
-push전에 다른사람이 이미 push했으면 에러발생 =>git pull
-git pull에서 에러발생시 merge에 해당하는 힌트인 구문 입력후 다시 pull
=>git config pull.rebase false
-vim에디터가 뜨는 경우:esc누른 후 :wq 입력
'코틀린-안드로이드' 카테고리의 다른 글
9일차)알고리즘 문제(햄버거 만들기), 코드카타 리뷰(collection APIs, Stringbuilder, stack, queue, deque, subList() vs slice()),코틀린 문법(널 안정성) (0) | 2024.05.31 |
---|---|
8일차)알고리즘 문제(둘만의 암호), 코틀린 문법(람다 함수,고차함수) (0) | 2024.05.30 |
6일차)알고리즘 문제(문자열 나누기) (0) | 2024.05.28 |
5일차)알고리즘 문제(체육복,숫자짝꿍), 코틀린 문법 (0) | 2024.05.27 |
4일차)코틀린 문법 - 4 (0) | 2024.05.16 |