본문 바로가기
  • 시 쓰는 개발자

프로그래밍 문법25

2차원 리스트 정렬하기 2차원 list 정렬 기본적으로는 정렬은 lambda를 사용해서 정렬을 한다. 그러나 2차원 배열 lst에 대해 lst.sort()라고 하면, lambda를 안써도 디폴트로 x좌표에 대해 오름차순 정렬하고, 값이 같으면 y좌표에 대해 다시 오름차순으로 정렬해준다. Ex. 이런식으로 2차원 리스트 있다고 가정. [ [2, 1], [3, 4], [1, 2], [1, 3], [3, 2] ] 결과적으로 저 5개 덩어리는 각각이 한몸이라 x기준으로 정렬하든 y기준으로 정렬하든 같이 움직임. array.sort(key=lambda x : x[0]) # x좌표 기준으로 정렬, y좌표 그대로 둠 array.sort(key=lambda x : x[1]) # y좌표 기준으로 정렬, x좌표 그대로 둠 array.sort(k.. 2024. 3. 7.
문자열 replace 파이썬 replace 문자열에서 replace('바꿀 문자', '이거로 바꿈', 변경 반복횟수) 라고 하면 문자열 내에서 일부를 통째로 원하는 문자로 변경 가능. 이거로 단어 개수 세거나 문자 길이를 늘리고 줄이고 할 수 있음. 변경 반복 횟수는 기본적으로 문자열 전체를 다루도록 설정되어있다. str = "oxoxoxox" star_string = str.replace("ox", "*") strange_string = str.replace("ox", "*", 1) # 반복횟수가 1번이라서 앞에 한번만 변경된다. print(star_string) print(strange_string) [출력] **** *oxoxox ※ 주의사항 참고로, 문자열 내에서 특정 문자끼리 위치를 서로 바꾸고 싶을때는 replac.. 2024. 3. 7.
숫자인 숫자, 문자인 숫자 n = 10 과 같이 키보드로 입력받지 않고 직접 작성해 넣은 코드에서, 숫자로 시작하는 단어(식별자, identifier)는 자동으로 수로 인식된다. 반면에 a,b,c = input().split() 3 4 5 이렇게 치면 다 더해서 345로 그냥 붙여서 출력되는데, 코드로 직접 a=3 b=4 c=5 해서 a+b+c 하면 12로 출력된다. / 물론 우리는 입력받을 때 map으로 입력받으므로 이런 실수는 하지 않는다! 2024. 3. 7.
split()과 split("")의 차이점 split() 공백 개수 상관없이 싹다 한꺼번에 처리해서 덩어리만 만들어준다. 그리고 공백 뿐만 아니라 탭이나 엔터도 처리해준다. split(" ") 공백 1개를 기준으로 싹다 처리해서, 공백이 2개면 " "도 덩어리로 만들어줌 Ex) iaa = "i am kwang hwi" \ "you can do it !!!" print(iaa.split()) print(iaa.split(" ")) split() : ['i', 'am', 'kwang', 'hwiyou', 'can', 'do', 'it', '!!!'] split(" ") : ['i', 'am', '', 'kwang', '', '', 'hwiyou', '', '', '', '', '', 'can', 'do', 'it', '!!!'] 2024. 3. 7.
list comprehension - list를 코드 한줄로 초기화하기 이 포스트에서는 list comprehension의 아주 간단한 형태만 보여주는데, 조금 더 숙달이 된다면 [ 출력되는 형태 또는 식 for 변수 in range(범위) if ~~] 처럼 한줄로 더 세세한 내용을 담을 수도 있다. 밑줄친 부분들이 특이점인데, 출력되는 형태 자체(x*2이나 x+2 처럼)를 정해줄 수도 있고, 홀짝(if x%2==0)처럼 조건을 달아서 출력해줄 수도 있다. 1) 1차원 리스트 초기화 하기 ① n개만큼 초기화 시켜놓고 시작하기 nums1 = [0 for i in range(10)] → list 0으로 10개 초기화 ② 직접 초기화 하기, 개수 제한 없음 nums2 = list(map(int, input().split())) → list에 원소들 하나씩 직접 입력해줌 2) 2차.. 2024. 3. 7.
Java 연산자 김영한님의 java-start 강의를 듣고 작성하였습니다. 연산자 주의할 점 String + int를 해주면 String + String으로 java가 바꿔서 더하게 된다. ex) "apple" + 4 = apple4 우선순위가 조금이라도 애매하다싶으면 무조건 괄호를 쓰기. 문자열끼리 비교할 땐 ==으로 비교하면 안되고 .equals() 메소드를 사용해야한다. 전위 증감 연산자 ++a a = 1, b = 0 b = ++a //전위 증감 연산자 a = a + 1 //a의 증감 연산이 먼저 진행, a = 2 b = a //이후에 a를 대입 b = 2 결과: a = 2, b = 2 대입을 하는 상황에서 전위 증감 연산자는 값을 먼저 증가시키고 대입을 한다. 후위 증감 연산자 a++ a = 1, b = 0 b .. 2024. 1. 7.
자료형 long (Long과 long 차이) long의 특징 long은 8byte로, 매우 큰 수를 저장할 수 있다. 그렇기 때문에, 일반적으로 int보다 큰 수를 다뤄야할 때 long을 사용한다고 보면 된다. 변수 뒤에 L을 붙여줘야한다.(소문자도 되지만 대문자 L을 권장.) ex) long abc = 1L; Long(참조타입)과 long(원시타입)은 다르다... 진짜 주의 !! 참고) 타입별 메모리 공간 크기 byte : 1byte (8bit) short : 2byte (16bit) int : 4byte (32bit) long : 8byte (64bit) 주의!!) Long과 long 차이 비교 Long과 long은 다르다. 예를 들어 다음과 같은 spring 코드가 있다. @Id @GeneratedValue(strategy = Generati.. 2024. 1. 6.
리터럴이란 ? 김영한님의 java-start 강의를 듣고 작성하였습니다. 아주 자주 언급되진 않지만 리터럴이라는 개념이 있다. Literal 리터럴은 어원 자체로 "문자" 또는 "글자"를 의미한다. 프로그래밍 공부에서 리터럴은 사용자(개발자)가 직접 입력해 넣은 값 자체를 의미한다. 즉, 리터럴은 "변하지 않는 값" 이라고 할 수 있다. int a = 10; char b = 'b' String c = "java" 여기서 a, b, c는 변수, 10, b, java가 리터럴이다. 이처럼 개발자가 고정해놓은 값을 리터럴이라고 하고, 이 값은 직접 써넣은 것이기에 당연히 변하지 않는다. 위 코드에서 변할 수도 있는 것은 a, b, c이지, 값 자체인 10이 변할 일은 없기 때문이다. 2024. 1. 6.
인텔리제이에서 컴파일 결과(ByteCode) 확인하기 김영한님의 java-start 강의를 듣고 작성하였습니다. 인텔리제이에서 컴파일 결과 확인해보기 예를 들어 이러한 코드가 있다고 하자. package variable; public class Var6 { public static void main(String[] args) { int a; // System.out.println(a); } } 이 코드를 실행하면 어떻게 될까? 물론, 주석처리한 부분을 풀어주면 a를 초기화해주지 않아서 컴파일 에러가 나게 된다. 컴파일 된 결과는 주황색 out 폴더에서 확인해볼 수 있고, 다음과 같다. // Source code recreated from a .class file by IntelliJ IDEA // (powered by FernFlower decompiler.. 2024. 1. 6.