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

프로그래밍 문법25

리스트와 문자열은 동일한가?? 파이썬 문법에서 문자열을 리스트처럼 다룰 수가 있기에 종종 이 둘이 같은지 헷갈릴 때가 있다. 예를 들면 name = "kim min su" 라고 하면, name[1] 이라고 할 때 i가 출력됨을 알 수 있다. 그렇다면 파이썬에서 리스트와 문자열은 동일하다고 말할 수 있을까?? 정답은 "No"이다. 리스트와 문자열은 모두 시퀀스(sequence) 자료형이지만, 내부 구현과 사용 방법에서 차이가 있다. 예를 들어, 리스트는 가변(mutable) 자료형라서 원소들을 추가, 삭제, 변경할 수 있지만, 문자열은 불변(immutable) 자료형이라 원소를 변경할 수 없다. 이는 굉장히 굉장히 중요한 사실이다. 이걸 모르고 문자열을 리스트처럼 생각하고 계속 바꾸려고 시도한다면 코딩 테스트에서 낭패를 볼 수 있다. .. 2023. 3. 6.
헷갈리는 문법 정리 (2) - isdigit, Counter, if-else 1. python의 sort()함수는 기본적으로 stable하다. 즉, 우선 순위가 같은 데이터에 대해서 정렬 후의 결과가 바뀌지 않는다. 2. str.isdigit() 문자열이 숫자인지 판단할 떄 isdigit() 함수를 이용하는데, 정확히는 숫자로만 이루어져있는지 확인하는 함수이다. 따라서 문자가 단 하나라도 있으면 False, 문자열의 모든 문자가 숫자로만 이루어져있으면 True를 반환한다. str.isdigit("100won") # False str.isdigit("100") # True 3. collections의 Counter함수★ Counter는 "리스트"를 값으로 주게 되면 각 원소들이 몇 번 등장했는지 세어 딕셔너리 형태로 반환한다. from collections import Counte.. 2022. 12. 12.
5장 배열 JAVA의 정석 책을 참고하였습니다. 까먹었을 법한 내용만 정리. 배열 “같은 타입”의 여러 변수를 하나의 묶음으로 다루는 것 배열의 각 요소들은 서로 연속적이다. 배열 선언방법 2가지 타입[ ] 변수이름; : int [ ] score; String[ ] name; 타입 변수이름[ ]; : int score [ ]; String name[ ]; ※ 주의점 배열의 선언만으로 공간이 할당되는 것은 아니다. int [ ] score;처럼 선언만으로 끝나는게 아니고, score = new int[5]처럼 배열을 “생성” 해줘야한다. 이를 한줄로 줄이면 다음과 같다. ex. int [ ] score = new int [5]; 다차원 배열의 선언과 생성 [ ]의 개수가 차원의 수를 의미한다. ex. int [ 행 .. 2022. 10. 28.
4장 조건문과 반복문 JAVA의 정석 책을 참고하였습니다. 까먹었을 법한 내용만 정리. 조건문 – if, switch + Math.random() 참고 if if (조건) { 결과 } 조건식의 결과는 반드시 true or false이다. switch switch (조건) { case A: ~~ break; case B: ~~ break; default: ~~ ... } 조건식의 결과는 정수나 문자열만 가능. ★ 이때 case문의 값인 A, B 자리에는 변수를 사용할 수 없다. switch문도 if문처럼 중첩 가능. Math.random() - 난수 발생 함수 ★★★ 0 이상 1.0 미만 double 값을 반환한다. ★★★ ex. 1~10 사이의 임의 정수를 얻기 int score = (int)(Math.random() * 1.. 2022. 10. 28.
3장 연산자 JAVA의 정석 책을 참고하였습니다. 까먹었을 법한 내용만 정리. 연산자 종류 우선순위가 높은 순서대로 쓰면 단항, 산술, 비교, 논리, 삼항, 대입 무엇보다도 괄호가 우선순위가 제일 높고, 단항 이항 삼항 순서대로 높다. 연산자 우선순위는 거의 다 상식적으로 생각하면 된다. 단, 주의할 점이 있다. 쉬프트연산자 > >>>(2를 곱하거나 2로 나눠줌)들은 덧셈연산자보다 우선순위가 낮다. ex. x 3 && x < 5) 이항 연산자의 특징 이항 연산자는 연산을 수행하기 전에 피연산자의 타입을 일치시킨다. 두 개의 타입 중 “표현범위”가 더 넓은 쪽으로 통일돼서 계산된다. ex. char + int = int + int float + int = float + float long + float = float .. 2022. 10. 28.
2장 변수 JAVA의 정석 책을 참고하였습니다. 까먹었을 법한 내용만 정리하려 합니다. 변수 타입 기본형 : boolean, char, byte, short, int, long, float, double ▶ 실제 값을 저장함, 사용하려면 0 등으로 초기화를 해줘야함. 참조형 : String, System 등 ▶ "객체의 주소"를 저장함 명명규칙과 권장사항 대소문자가 구분되고, 길이제한 X // True와 true(예약어)는 서로 다르다. 특수문자는 언더바(_)와 달러사인($)만 허용된다. 클래스 이름의 첫글자는 항상 대문자로, 변수와 메소드 이름의 첫글자는 항상 소문자로 여러 단어는 첫글자가 대문자 상수는 대문자로 쓰고, final을 붙여줌 문자와 문자열 문자는 문자가 딱 1개만 있는 char, 문자열은 문자 2개.. 2022. 10. 28.
헷갈리는 문법 정리 (1) - end='', strip(), sys.stdin.readline() 1. end = ''와 end = ' ' (띄어쓰기 유무) print(~~, end=‘’) 할 때 end=''는 한줄로 다 붙여서 출력, end=' '는 한줄인데 다 한칸씩 띄어서 출력 해준다. 두 개는 서로 다른 출력이므로 주의. 2. for i in iter: for i in list이름: 라고 하면 list 에 있는 원소들 하나씩 i로 접근 가능하다. list자리에는 iterable한 객체가 올 수 있으므로 set, dictionary, tuple도 접근 가능하다. 주의) dictionary는 순회하면 key값을 반환함!! 3. input()과 sys.stdin.readline() 입력 방식이 느린 input을 사용하면 여러 줄을 입력받을 때 시간초과가 날 수 있다. 이때 input 대신 sys.s.. 2022. 10. 21.